我有以下目录布局: Program文件夹包含java、class和pack文件夹,我当前的位置是program/java,其中包含a.java和b.java文件。最初类和包不包含任何内容。
b.java
package comm.domm;
public class b
{
public void bFu()
{
System.out.println("b function");
}
}
a.java
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 并将 b.class 放置在 program/pack/comm/domm 中 并在 class 下创建 com/dom 并将 a.class 放入 program/class/com/dom
现在从我发出的同一当前目录,
java -cp ../class;../pack com.dom.a
这不起作用,它可以找到a.class,但不能找到b.class(b.class是a.class需要的,如源代码中所述),但是在编译a.java时使用
javac -cp ../pack -d ../class a.java
它可以找到b.class并生成a.class,那么为什么我尝试运行a.class时找不到b.class?如何才能找到它? b.class在编译时找到,但在运行时找不到,为什么?
最佳答案
除非这是一个拼写错误
javac -cp ../pack -d ../class b.java
您根本没有编译过a.java
。如果你有
javac -cp ../pack -d ../class a.java
相反,它对我有用并打印
b function
Utsab
正如预期的那样。
关于java - 运行java代码,它使用其他包中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984761/