我正在尝试使用package指令编译java
文件。但是,当将指令添加到最简单的程序存根时,我收到错误并且无法再启动程序......出了什么问题?
Dummy0:
class Dummy0 {
public static void main( String[] args ) {
System.out.println("Hello, world!");
}
}
Dummy1:
package de.train;
class Dummy1 {
public static void main( String[] args ) {
System.out.println("Hello, world!");
}
}
这是我的输出。一切都编好了。但我不能运行de.train.Dummy1类,虽然它显然存在。
$ javac Dummy*.java
$ java Dummy0
Hello, world!
$ java Dummy1
Error: Could not find or load main class Dummy1
$ java de.train.Dummy1
Error: Could not find or load main class de.train.Dummy1
$ javap Dummy1.class
Compiled from "Dummy1.java"
class de.train.Dummy1 {
de.train.Dummy1();
public static void main(java.lang.String[]);
}
我在这个项目的窗口下。这是一些安全限制吗?如何删除它?
答案 0 :(得分:2)
它正在寻找类de.train.Dummy1
,这意味着它将在目录Dummy1.class
中查找名为de\train
的文件 - 但该文件将实际< / em>在当前目录中。
选项:
将源代码保持原样,但让编译器为您生成目录结构:
> javac -d . Dummy*.java
> java de.train.Dummy1
将Dummy1.java
移至de\train
目录:
> javac de\train\Dummy*.java
> java de.train.Dummy1
答案 1 :(得分:0)
如果您正在执行没有包的java程序,它将尝试在同一文件夹/目录中找到这些类。包只不过是Windows中的目录结构。如果要在其他文件夹中执行类,则必须指定完整的包并执行。