我有一个关于javac和Java包的快速问题。如何在软件包中编译类,稍后用“java程序”(不带软件包名称)执行它们?
我有一个简单的程序(我们就叫它Program.java),这是目前在以下目录:
- myRepository/myProgram
在Program.java和其他的.java myRepository/myProgram目录中的文件,我已声明package myProgram.*
并且还包含import myProgram.*;
。
所以当我输入javac myProgram/Program.java
,它编译得很好,如果我输入java myProgram/Program
,它运行良好。
但是,我试图让目录中生成.class文件,而不是myRepository/myProgram
,这是源文件所在的位置。我试图javac myProgram/Program.java -d ..
产生在myRepository目录下的.class文件,但是当我尝试“Java程序”,它给了我下面的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Program (wrong name: myProgram/Program).
有什么办法办法,我能得到的.class文件现身在主目录(myRepository)中,而不是源代码的位置(myRepository/myProgram),并且能够在myRepository中执行java Program
?
那么有没有办法让这个我可以只输入“JAVA程序”,并使其从主目录中工作时,源代码是不同的目录? – FlamesPuck12 2011-02-06 02:40:59
除了编写一个新的`java`实现,没有。您可以考虑使用IDE,您只需按下按钮(或点击热键)即可编译并运行您的代码。 – 2011-02-06 02:46:34