从文件夹运行java类文件时出现问题

时间:2012-06-28 16:57:58

标签: java packaging javac

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

代码编译正常:

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

1 个答案:

答案 0 :(得分:2)

问题不在于运行Java文件,它运行正常。所以你想了解以下内容:

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

  1. 创建Java源文件(* .java文件)
  2. 使用javac编译为二进制类文件(* .class文件)
  3. 使用java executable
  4. 运行类文件

    我们使用包结构来组织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属性的清单文件。