[英]running java from command line
到目前为止,我主要使用eclipse。 现在,我正在尝试从终端运行Java,但程序包存在问题。
这是我的Main.java
文件:
package main;
class Main {
public static void main(String[] args) {
System.out.println("it's working");
}
}
我使用javac Main.java
进行javac Main.java
,然后使用java Main
运行,这给了我:
java Main
Exception in thread "main" java.lang.NoClassDefFoundError: Main
Caused by: java.lang.ClassNotFoundException: Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: Main. Program will exit.
当我删除package Main
一切正常。 我想念什么?
java -version
给出:
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
您需要在一个目录级别上运行java命令,并以完全限定的软件包名称提供它,例如: java main.Main
请参阅Java Launcher如何查找用户类以了解其工作方式。
您可以使用以下命令:
java main.Main
确保main
(小写)软件包目录在类路径上。
您的类路径可能设置不正确。 由于您为.java文件提供了一个程序包,因此不再命名。
一个例子:
java -cp ./package1/ main.Main //from the current directory and
//if main package is contained in package1
您需要完全限定班级名称。 为了将来参考,如果您想从命令行运行,则必须在程序包级别停止该间接调用(因为缺少更好的术语)。 假设您的课程在package1.package2.Main.java包中,我将像java -cp / blah / blah package1.package2.Main那样运行它
视窗:
javac main\\Main.java
苹果电脑:
javac main/Main.java
java main.Main
如果添加package Main
,那么必须将源文件放在Main / Main.java文件夹中。 之后,您可以进行编译。 当您运行程序时,使用“ cd”转到Main文件夹,然后编写java -cp Main.Main
参见与您的问题类似的我的问题noclassdeffounderror
尝试这个...
在window中,您只需将代码编译为
javac -d。 Main.java
然后在程序所在的相同路径下创建一个具有您在类中指定的名称的包(文件夹)(在您的代码中,创建了一个名为“ main”的包)。
然后您只需以java main.Main或java main / Main运行程序即可
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.