我在一个文件夹中有三个源文件。我只想用命令行编译它们然后执行它们。但是,我遇到了以下问题。我在一个窗户上:
代码编译正常:
C:\mycode\src\code>javac Source1.java Source2.java Source3.java
不从类文件所在的文件夹运行:
C:\mycode\src\deckofcards>java Source1
Exception in thread "main" java.lang.NoClassDefFoundError: Source1 (wrong name: code/Source1)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Source1. Program will exit.
但是,它在移动到父文件夹时会运行:
C:\mycode\src\code>cd ..
C:\mycode\src>java code/Source1
Hello1
Hello2
Hello3...
......
....
我想将这个来源分发给某人,我不确定他们是在windows还是unix box上。
最终我想创建一个可执行的jar文件但是这也给了我这样的错误。
答案 0 :(得分:2)
问题不在于运行Java文件,它运行正常。所以你想了解以下内容:
要运行Java程序,您需要执行以下步骤:
我们使用包结构来组织java文件。在您的情况下,它是一个简单的应用程序(并且您使用名为“code”的包),但在大型生产应用程序中,我们需要将代码组织到许多包中。
在运行类文件时,我们需要提供类文件路径(包括包路径)。因此,在您的情况下,您需要执行java code/Source1
来运行您的课程。
您可以从以下链接中了解详情:http://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html
要创建JAR文件,您可以参考链接:http://docs.oracle.com/javase/tutorial/deployment/jar/build.html
为了使JAR文件可执行,请确保添加带有main-class属性的清单文件。