有相互依赖的源文件用eclipse编译成功,单独编译失败,请大家帮忙指点一下,谢谢!

大熊来了 2013-01-13 01:20:53
其中Example5_10.java保存在当前目录,Geometry.java,Pillar.java,Rectangle.java保存在当前目录下的com/yaya/目录下

问题是:我不用ecilpse,用手动javac去编译Geometry.java,Pillar.java,Rectangle.java,请问如何的一个编译顺序才可行呢?

我首先编译成功了Geometry.java,D:\workspace\Pillar\src\com\yaya>javac -encoding utf-8 Geometry.java

但是,Pillar.java,Rectangle.java都编译失败,但是用eclipse是编译成功的,请问这是为什么,该怎么处理?非常感谢!

D:\workspace\Pillar\src\com\yaya>javac -encoding utf-8 Pillar.java
Pillar.java:33: 找不到符号
符号: 类 Geometry
位置: 类 com.yaya.Pillar
Geometry bottom;
^
Pillar.java:39: 找不到符号
符号: 类 Geometry
位置: 类 com.yaya.Pillar
public Pillar(Geometry bottom, double height){
^
Pillar.java:44: 找不到符号
符号: 类 Geometry
位置: 类 com.yaya.Pillar
public void setBottom(Geometry bottom){
^
3 错误

D:\workspace\Pillar\src\com\yaya>javac -encoding utf-8 Rectangle.java
Rectangle.java:5: 找不到符号
符号: 类 Geometry
public class Rectangle extends Geometry{
^
1 错误


//1. Geometry.java
package com.yaya;
/*
计算几何图形的面积
*/

public abstract class Geometry{
public abstract double getArea();
}


//2. Pillar.java
package com.yaya;
/*
设计一个Pillar类,通过Pillar类创建的对象计算各种柱体的体积
*/

public class Pillar{
Geometry bottom;
double height;

Pillar(){
}

public Pillar(Geometry bottom, double height){
this.bottom=bottom;
this.height=height;
}

public void setBottom(Geometry bottom){
this.bottom=bottom;
}

public double getVolume(){
return bottom.getArea()*height;
}

}


//3、Rectangle.java
package com.yaya;
/*
计算长方形的面积
*/
public class Rectangle extends Geometry{
double length;
double width;

Rectangle(){
}

public Rectangle(double length, double width){
this.length=length;
this.width=width;
}
public double getArea(){
return length*width;
}
}


//4、Example5_10.java
import com.yaya.*;

public class Example5_10{
public static void main(String args[]){
Pillar pillar;

Geometry tuxing;
tuxing=new Rectangle(2,7);

pillar=new Pillar(tuxing, 3);
System.out.println("bottom is Rectangle, the Volume="+pillar.getVolume());
}
}
...全文
226 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wapigzhu 2013-01-15
  • 打赏
  • 举报
回复
引用 4 楼 wxdlut 的回复:
引用 3 楼 wapigzhu 的回复:引用 1 楼 wapigzhu 的回复: 你这样相互引用的情况单个编译是不行的吧, 没记错的话应该是这样 javac -encoding utf-8 Geometry.java;Pillar.java;Rectangle.java 这个地方写错了,是用空格隔开,不是; javac -encoding utf-8 Geome……
按你说的这样是可以,问题是你要把编译好的.class导进去他才能编译.. 应该是这样写的,你试试 javac -encoding utf-8 -classpath Geometry.class Pillar.java 因为你不指明位置,它还是不知道去哪找Geometry.class
大熊来了 2013-01-15
  • 打赏
  • 举报
回复
引用 3 楼 wapigzhu 的回复:
引用 1 楼 wapigzhu 的回复: 你这样相互引用的情况单个编译是不行的吧, 没记错的话应该是这样 javac -encoding utf-8 Geometry.java;Pillar.java;Rectangle.java 这个地方写错了,是用空格隔开,不是; javac -encoding utf-8 Geometry.java Pillar.java Rectangle.ja……
谢谢 果真可以了 编译的原理上能否帮忙介绍一下啊,照理说Geometry.java编译成功后生成Geometry.class字节码,后面依赖的类再编译应该可以的啊?
wapigzhu 2013-01-13
  • 打赏
  • 举报
回复
引用 1 楼 wapigzhu 的回复:
你这样相互引用的情况单个编译是不行的吧, 没记错的话应该是这样 javac -encoding utf-8 Geometry.java;Pillar.java;Rectangle.java
这个地方写错了,是用空格隔开,不是; javac -encoding utf-8 Geometry.java Pillar.java Rectangle.java
wapigzhu 2013-01-13
  • 打赏
  • 举报
回复
如果是先编译成功Geometry,说明它没有引用到另外两个类吧, 如果Geometry.class就在当前目录 你试试 javac -encoding utf-8 -classpath Geometry.class Pillar.java
wapigzhu 2013-01-13
  • 打赏
  • 举报
回复
你这样相互引用的情况单个编译是不行的吧, 没记错的话应该是这样 javac -encoding utf-8 Geometry.java;Pillar.java;Rectangle.java

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧