在OSX终端上无光盘编译java代码
当我跑的时候在OSX终端上无光盘编译java代码,java,terminal,Java,Terminal,当我跑的时候 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命令的情况下执行此操作?如果是,怎么做?假设test.java没有包语句,您的类(应该命名为te
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命令的情况下执行此操作?如果是,怎么做?假设
test.java
没有包
语句,您的类(应该命名为test
,而不是test
)在未命名包中,那么请执行以下操作:
javac'path/to/test.java'
java-cp“路径/目标”测试
如果您的test.java
文件以包开头,则代码>语句,然后执行以下操作:
java-cp'path'to.test
如果它说package path.to代码>,然后执行以下操作:
java path.to.test
或者这是明确的:
java-cp。路径测试
如果您的package语句使用了任何其他名称,那么您的目录结构是错误的,因为目录必须与package语句匹配,从类路径(-cp
)中命名的目录开始。假设test.java
没有package
语句,您的类(应命名为Test
,而不是Test
)在未命名的包中,请执行以下操作:
javac'path/to/test.java'
java-cp“路径/目标”测试
如果test.java
文件以package to;
语句开头,则执行以下操作:
java-cp'path'to.test
如果显示的是包路径.to;
,则执行以下操作:
java path.to.test
或者这是明确的:
java-cp.path.to.test
如果您的package语句使用了任何其他名称,那么您的目录结构是错误的,因为目录必须与package语句匹配,从类路径(-cp
)中命名的目录开始。您的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
是
如果缺少程序包
语句,则您将得到正在报告的错误
% javac path/to/Test.java
% java path.to.Test
Exception in thread "main" java.lang.NoClassDefFoundError: path/to/Test (wrong name: Test)
您的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
是
如果缺少程序包
语句,则您将得到正在报告的错误
% javac path/to/Test.java
% java path.to.Test
Exception in thread "main" java.lang.NoClassDefFoundError: path/to/Test (wrong name: Test)
如果希望从当前位置(可能是项目目录)编译和运行该类,我建议:
在类中使用包声明:
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
如果希望从当前位置(可能是项目目录)编译和运行该类,我建议:
在类中使用包声明:
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
path/to/Test.java
需要与源路径相对。java
命令不采用路径,而是采用完全限定的类名-句点,而不是斜杠。它与类路径相对。(类名应以大写字母开头。)@bphilipnyc,学习命令行工具的工作方式没有错。IDE非常适合编辑和手动运行单元测试,但是如果您的签入是由一个持续集成系统构建、测试和打包的,那么迟早您需要了解命令行工具。我没有像现在这样运行javac10年。这当然没什么害处,但你最好花时间学习真正的编程原理。它还将识别一些新程序员经常犯的常见语法错误……例如,OP可能缺少一个包语句,几乎任何IDE都可能捕捉到它(见@stackoverflowuser2010的答案).path/to/Test.java
需要与源路径相对。java
命令不采用路径,而是采用完全限定的类名-句点,而不是斜杠。它与类路径相对。(类名应以大写字母开头。)@bphilipnyc,学习命令行工具的工作方式没有错。IDE非常适合编辑和手动运行单元测试,但是如果您的签入是由一个持续集成系统构建、测试和打包的,那么迟早您需要了解命令行工具。我没有像现在这样运行javac10年。这当然没什么害处,但你最好花时间学习真正的编程原理。它还将识别一些新程序员经常犯的常见语法错误……例如,OP可能缺少一个包语句,几乎任何IDE都可能捕捉到它(见@stackoverflowuser2010的答案)。谢谢!但是如果我有一个package语句呢?@stacko那取决于package
语句说什么。谢谢!但是如果我有一个package语句呢?@stacko那取决于package
语句说什么。那不应该是java path.to.Test
?@Andreas:java path.to.Test
和java pat吗h/to/Test
在此上下文中是等效的。我将修改答案以澄清。这不应该是java path.to.Test
?@Andreas:java path.to.Test
和java path/to/Test
在此上下文中是等效的。我将修改答案以澄清。