在没有cd的OS X终端中编译java代码

时间:2016-08-12 22:46:27

标签: 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命令的情况下执行此操作?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:1)

您的Test.java文件顶部应该有package行:

package path.to;

public class Test {

    public static void main(String argv[]) {
    }
}

然后你可以编译并运行它。它适用于我的MacBook Pro。请注意,java path.to.Testjava path/to/Testequivalent

% 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)

如果您希望从当前位置(可能是项目目录)编译并运行该类,我建议:

  1. 在班级中使用包裹声明:

    package path.to;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println("LOADED");
        }
    }
    
  2. 运行代码时,请使用点表示法对类名称执行此操作:

    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)中指定的目录开始。

相关问题