1

我在一个文件夹中有三个源文件。我只是想使用命令行编译它们然后执行它们。但是,我遇到以下问题。我在一个 Windows 盒子上:

代码编译良好:

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 文件,但这也给了我这样的错误。

4

1 回答 1

2

这里的问题不在于运行 Java 文件,它运行良好。所以你想了解以下内容:

为了运行 Java 程序,您需要执行以下步骤:

  1. 创建 Java 源文件(*.java 文件)
  2. 使用 javac 编译成二进制类文件(*.class 文件)
  3. 使用 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 属性的清单文件。

于 2012-06-28T17:06:36.960 回答