一尘不染

Java程序无法运行,并引发有关类的错误

java

因此,我想运行从Start.java编译的刚编译的Start.class文件。问题是它将引发此错误:

java Start 
Exception in thread "main" java.lang.NoClassDefFoundError: Start (wrong name: files/Start)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

我已经用Eclipse编写了该程序,并且想从终端运行它。这里有什么问题?

新错误:

java files.Start http://mirror.symnds.com/software/Apache/tomcat/tomcat-7/v7.0.53/bin/apache-tomcat-7.0.53.zip
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
    at files.Start.main(Start.java:93)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 1 more

阅读 202

收藏
2020-12-03

共1个答案

一尘不染

请查看如何从命令行编译和运行Java代码,在这里您将获得有关类路径以及如何在类路径中添加相关jar的信息。


这是上面链接的详细信息。

任务

可以说我们有一个相当标准的java项目,该项目由三个顶级文件夹组成:

/ bin- 将包含编译的.class文件的空文件夹

/ lib- 包含第三方.jar文件

/ src- 包含.java源文件`

我们的任务是从根目录编译并启动项目。我们将以Windows OS为例(在Unix系统上,唯一的区别是路径分隔符号-“:”而不是“;”)。

编译Java代码

第一步是将纯文本.java源代码编译为Java虚拟机字节码(.class文件)。这是通过JDK附带的javac实用程序完成的。

假设我们在应用程序根文件夹中,试图从com.example包中编译Application.java文件,该文件使用从lib文件夹到目标bin文件夹的lib1.jar和lib2.jar库,则编译命令应采用以下格式:

javac -d bin -sourcepath src -cp lib/lib1.jar;lib/lib2.jar src/com/example/Application.java
2020-12-03