当我跑步时
javac 'path/to/test.java'
java 'path/to/test'
我收到这样的错误
Exception in thread "main" java.lang.NoClassDefFoundError: path/to/test (wrong name: test)
在我运行" cd path / to"之后我也这样做,但有没有办法在没有cd命令的情况下执行此操作?如果是这样,怎么样?
答案 0 :(得分:1)
您的Test.java
文件顶部应该有package
行:
package path.to;
public class Test {
public static void main(String argv[]) {
}
}
然后你可以编译并运行它。它适用于我的MacBook Pro。请注意,java path.to.Test
和java path/to/Test
为equivalent。
% javac path/to/Test.java
% java path.to.Test
如果您缺少 package
语句,则会收到您要报告的错误。
% javac path/to/Test.java
% java path.to.Test
Exception in thread "main" java.lang.NoClassDefFoundError: path/to/Test (wrong name: Test)
答案 1 :(得分:1)
如果您希望从当前位置(可能是项目目录)编译并运行该类,我建议:
在班级中使用包裹声明:
package path.to;
public class Test {
public static void main(String[] args) {
System.out.println("LOADED");
}
}
运行代码时,请使用点表示法对类名称执行此操作:
javac path/to/Test.java
java path.to.Test
答案 2 :(得分:0)
假设test.java
没有package
语句,您的类(应该命名为Test
,而不是test
)位于未命名的包中,因此请执行以下操作:
javac 'path/to/test.java'
java -cp 'path/to' test
如果您的test.java
文件以package to;
语句开头,则执行此操作:
java -cp 'path' to.test
如果它说package path.to;
,那么你这样做:
java path.to.test
或者这是明确的:
java -cp . path.to.test
如果你的package语句有任何其他名称,那么你的目录结构是错误的,因为该目录必须与package语句匹配,从类路径(-cp
)中指定的目录开始。