运行java代码,该代码使用其他包中的类
我有以下目录布局: program文件夹包含java、class和pack文件夹,我的当前位置是program/java,其中包含a.java和b.java文件。最初,类和包不包含任何内容 b、 爪哇运行java代码,该代码使用其他包中的类,java,Java,我有以下目录布局: program文件夹包含java、class和pack文件夹,我的当前位置是program/java,其中包含a.java和b.java文件。最初,类和包不包含任何内容 b、 爪哇 package comm.domm; public class b { public void bFu() { System.out.println("b function"); } } a、 爪哇 package com.dom; import comm
package comm.domm;
public class b
{
public void bFu()
{
System.out.println("b function");
}
}
a、 爪哇
package com.dom;
import comm.domm.*;
class a
{
public static void main(String args[])
{
(new b()).bFu();
System.out.println("Utsab");
}
}
现在,从program/java发出以下命令
javac -d ../pack b.java
javac -cp ../pack -d ../class a.java
它在pack下创建comm/domm,并在program/pack/comm/domm中放置b.class
并在class下创建com/dom,并在program/class/com/dom中放置一个.class
现在从我发布的同一个当前目录
java -cp ../class;../pack com.dom.a
这不起作用,它可以定位a.class,但不能定位b.class(b.class是a.class所必需的,如源代码中所述),这次是在使用
javac -cp ../pack -d ../class a.java
它可以定位b.class并生成a.class,那么为什么在我尝试运行a.class时找不到b.class??如何找到它?
b、 类是在编译期间找到的,但不是在运行时找到的,为什么???除非这是一个输入错误
javac -cp ../pack -d ../class b.java
您根本没有编译a.java
。如果你有
javac -cp ../pack -d ../class a.java
相反,它对我和印刷品起作用
b function
Utsab
正如所料。我的逻辑是正确的,这是一个环境问题,在更改环境后,它工作得很好,没有任何更改……谢谢大家您能发布您得到的确切异常吗?因为看起来您是在unix上运行的,可能是:../class:../pack(用冒号分隔,而不是分号分隔).am在cygwin上运行,这为windows中的unix环境提供了支持,并且需要:;不是:。我无法附上屏幕截图,因为上面写着“你需要@至少10个声誉!”,如果我能上传,可能会更清楚…@SotiriosDelimanolis:它向我展示了java-help的输出,然后-bash:../pack:是一个目录。在本例中,您将a.class和b.class都放在程序/类中,但我想将a.class放在程序/类中,将b.class放在程序/包中……无论mt逻辑是否正确,这都是环境的问题,在更改环境后,它工作得很好,没有任何变化…谢谢这应该是一个评论,而不是一个答案。这不提供问题的答案。要评论或要求作者澄清,请在他们的帖子下方留下评论——你可以随时对自己的帖子发表评论,一旦你有足够的评论,你就可以发表评论了。