java txt文档下压包和调用的问题 出错“找不到符号”

最近自学java,在看电子工业出版社出版的《java 6 从入门到精通》
沈志宏 王松涛 周园春编的书(原书pg39~41)
源程序如下
(1)创建了一个包,该包源文件名为class1.java
/*将类Point和Rectangle打包*/
package java.examplepackage;

class Point
{ protected int x;
protected int y;
public Point()
{ this.x=0;
this.y=0;
}
public Point(int x,int y)
{ this.x=x;
this.y=y;
}
}

class Rectangle
{ private int width=0;//定义成员变量
private int height=0;//定义成员变量
private Point origin;//定义成员变量
public Rectangle()
{ //构造方法,不带参数
origin=new Point(0,0);
}
public Rectangle(Point p)
{ //构造参数,带一个参数
origin=p;
}
public Rectangle(Point p,int w,int h)
{ //构造方法,带3个参数
origin=p;
width=w;
height=h;
}
public void move1(int x,int y)
{ //成员方法
origin.x=x;
origin.y=y;
}
public void move2(int a,int b)
{ //成员方法
origin.x+=a;
origin.y+=b;
}
public int area()
{ //成员方法
return width*height;
}
}

然后再用 javac -d C:\java class1.java
压包

然后第二段程序的源程序如下
(2)引入一个包

/*引入一个包 java.examplepackage*/
import java.examplepackage;
class TwoRectAreaBal
{ //定义一个类
public static void main(String args[])
{ int x=3,y=4;
int w=4,h=5;
Point p1=new Point(x,y);
Point p2=new Point(8,2);
Rectangle r1=new Rectangle(p1,w,h);
Rectangle r2=new Rectangle(p2,8,10);
r1.move1(2,3);
r2.move2(-2,4);
System.out.println("两个矩形面积差="+(r2.area()-r1.area()));
}
}

但是调用第二段程序的时候,却提示class2.java:2:找不到符号
符号:类 examplepackage
位置:软件包 java
class2.java:8:无法访问Point
我觉得第二个错误的原因可能就是由于第一个没有成功的调用包引起的。

在网上查了查
有人说改环境变量classpath
我在里面加了;C:\java\examplepackage也不行
百思不得其解啊
希望某些大大能给解释下
越详细越好
我是自学
可能基础不是很好。
classpath=c:\java也试过,但是还是不行
原来class1里面是用的private
但是我发现编译不过去
后来我自己改成protected之后可以编译过去了
但是依然报错
希望大大能帮个忙
自学不好学啊。。。

package javann.examplepackage;
public class Point {
public int x;
public int y;

public Point(){
this.x=0;
this.y=0;
}
public Point(int x,int y){
this.x=x;
this.y=y;
}
}

package javann.examplepackage;
public class Rectangle {
private int width=0;
private int height=0;
private Point origin;//定义成员变量
public Rectangle()
{
origin=new Point(0,0);
}
public Rectangle(Point p)
{
origin=p;
}
public Rectangle(Point p,int w,int h)
{
origin=p;
width=w;
height=h;
}
public void move1(int x,int y)
{
origin.x=x;
origin.y=y;
}
public void move2(int a,int b)
{
origin.x+=a;
origin.y+=b;
}
public int area()
{
return width*height;
}
}

import javann.examplepackage.*;
class TwoRectAreaBal {
public static void main(String args[]){
int x=3,y=4;
int w=4,h=5;
Point p1=new Point(x,y);
Point p2=new Point(8,2);
Rectangle r1=new Rectangle(p1,w,h);
Rectangle r2=new Rectangle(p2,8,10);
r1.move1(2,3);
r2.move2(-2,4);
System.out.println("r2.area()-r1.area()="+(r2.area()-r1.area()));
}
}

楼主你真牛,买了本超级盗版书!
要运行上面的程序,假如你的包创在d:,
即d:\javann\examplepackage,把
Point和Rectangle两个类放在上述包下,
再在d:\目录下创建 TwoRectAreaBal类,
完成了上面步骤,就可以来运行了!
1,设置path,在“我的电脑”——“属性”——“高级”——“环境变量”
——“系统变量”里找到path变量;然后把你安装JDK的bin目录放在path
变量的最前面,用分号隔开(windows系统),
eg:C:\Program Files\Java\jdk1.6.0_06\bin;
不要把其它的变量删除,那样有可能会导致系统崩溃!
2,设置classpath——要自己创建的,点下面的“新建”就会弹出对话框,
设置classpath=.;d:\
上面得语句就是JVM(java虚拟机)会自动在“.”(表示当前文件夹得目录下,即你
所运行java的当前目录)找你编译出来的.class文件。而后面得d:\就是针对你所
列的问题所设置的!
3,在cmd命令下进入d:\javann\examplepackage目录,先把Point类和Rectangle两个类编译,
javac Point.java
javac Rectangle.java
4,cd..\.. 退到d:\根目录下,然后
javac TwoRectAreaBal.java
java TwoRectAreaBal
就可以得到r2.area()-r1.area()=60;
一切OK了!
另外还有个必须注意的地方就是,你的包名取得也太强硬了,竟然不怕权威,跟sun公司对着干,
包名java.XXXX这类包名你自己定义的运行时会抛SecurityException异常,指示安全侵犯!
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-07-20
你没有理解java中的包! java中的包是与文件系统中的目录结构相对应的。!什么意思呢? 比如你建立了examplepackage包,我知道你的java类放在C:\java下的,请你注意下面的操作:1:在C:\java下建立一个叫examplepackage的文件夹2:把class1.java剪切到examplepackage文件夹下3:把class2.java剪切到C:\java下4:用javac命令编译上数述5类5:把C:\java添加进classpath中6:打开cmd进入C:\java中,运行java class2 7:希望你能运行

参考资料:如果您的回答是从其他地方引用,请表明出处

第2个回答  2009-07-20
第一个压根都没编译成功,哪来的class1,要用class1第一个类里至少有一句话是public class class1,现在的破书太不负责,也不跟初学者说说用啥工具,都喜欢让人用记事本写。你还是下个eclipse用吧,这么学够你受的
第3个回答  2009-07-22
打的jar包放哪里了?
第4个回答  2020-03-31
打的jar包放哪里了?
再看看别人怎么说的。
相似回答
大家正在搜