因此,我想运行从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
请查看如何从命令行编译和运行Java代码,在这里您将获得有关类路径以及如何在类路径中添加相关jar的信息。
这是上面链接的详细信息。
任务
可以说我们有一个相当标准的java项目,该项目由三个顶级文件夹组成:
/ bin- 将包含编译的.class文件的空文件夹 / lib- 包含第三方.jar文件 / src- 包含.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