为什么可以';我不能用Ubuntu编译我的Java应用程序吗?
我花了两天的时间试图从Ubuntu的命令行编译java应用程序。我知道我已经安装了Java,因为我可以在Eclipse和Netbeans中运行我的应用程序,而且它们工作得很好。但是,如果我想从命令行编译我的应用程序,我会得到以下错误消息: javac Main.java Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: input/Main) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:637) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:323) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:268) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) Could not find the main class: Main. Program will exit. javac Main.java 一切都很好,没有错误或任何事情。然后我尝试: java Main 爪哇岛 我得到这个错误信息: javac Main.java Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: input/Main) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:637) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:323) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:268) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) Could not find the main class: Main. Program will exit. 线程“main”java.lang.NoClassDefFoundError:main中出现异常(错误名称:input/main) 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.defineClass(ClassLoader.java:637) 位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 位于java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 在java.net.URLClassLoader.access$000(URLClassLoader.java:73) 在java.net.URLClassLoader$1.run(URLClassLoader.java:212) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:205) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:323) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:268) 位于java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) 找不到主类:main。程序将退出。请尝试: 从错误的外观来看,您的主类位于包“input”中。运行类时需要指定包名,而不是文件名。请尝试:为什么可以';我不能用Ubuntu编译我的Java应用程序吗?,java,compiler-construction,Java,Compiler Construction,我花了两天的时间试图从Ubuntu的命令行编译java应用程序。我知道我已经安装了Java,因为我可以在Eclipse和Netbeans中运行我的应用程序,而且它们工作得很好。但是,如果我想从命令行编译我的应用程序,我会得到以下错误消息: javac Main.java Exception in thread "main" java.lang.NoClassDefFoundError: Main (wrong name: input/Main) at java.lang.ClassLoa
从错误的外观来看,您的主类位于包“input”中。运行类时需要指定包名,而不是文件名。这看起来像是典型的类路径问题。Eclipse和Netbeans将为您设置类路径,但是当您向命令行写入时,您需要自己完成 假设您使用的是BASH,请尝试在命令行中键入以下内容:
CLASSPATH=/path/to/your/java/class/file
java -cp /path/to/your/java/class/file Main
或者,您也可以从java命令行执行此操作:
CLASSPATH=/path/to/your/java/class/file
java -cp /path/to/your/java/class/file Main
关注更多信息
编辑:好吧,我看你明白了。祝贺你 这看起来像一个经典的类路径问题。Eclipse和Netbeans将为您设置类路径,但是当您向命令行写入时,您需要自己完成 假设您使用的是BASH,请尝试在命令行中键入以下内容:
CLASSPATH=/path/to/your/java/class/file
java -cp /path/to/your/java/class/file Main
或者,您也可以从java命令行执行此操作:
CLASSPATH=/path/to/your/java/class/file
java -cp /path/to/your/java/class/file Main
关注更多信息
编辑:好吧,我看你明白了。祝贺你 类加载器根本找不到类input.Main
类应该位于目录
/input
,该目录中的文件应该称为Main.class
,java命令应该是“java input.Main
”。类加载器根本找不到类input.Main
该类应位于目录
/input
,该目录中的文件应称为Main.class
,java命令应为“java input.Main
”。打开终端并粘贴此命令:
export CLASSPATH=.:/usr/local/tomcat/common/lib/jsp-api.jar:/usr/local/tomcat/common/lib/servlet-api.jar:/home/trenog/javokapi/bin/xmlrpc.jar
打开端子并粘贴此命令:
export CLASSPATH=.:/usr/local/tomcat/common/lib/jsp-api.jar:/usr/local/tomcat/common/lib/servlet-api.jar:/home/trenog/javokapi/bin/xmlrpc.jar
并从包含
input
目录而不是input
目录本身(应该包含Main.class
)的目录运行。并从包含input
目录而不是input
目录本身(应该包含Main.class
)的目录运行.这与tomcat无关.这与tomcat无关。