为啥我不能使用 Ubuntu 编译我的 Java 应用程序?
Posted
技术标签:
【中文标题】为啥我不能使用 Ubuntu 编译我的 Java 应用程序?【英文标题】:Why can't I compile my Java applications using Ubuntu?为什么我不能使用 Ubuntu 编译我的 Java 应用程序? 【发布时间】:2009-08-24 16:54:21 【问题描述】:我已经尝试了两天来让我的 java 应用程序从 Ubuntu 的命令行编译。我知道我已经安装了 Java,因为我可以在 Eclipse 和 Netbeans 中运行我的应用程序并且它们运行良好。但是,如果我想从命令行编译我的应用程序,我会收到以下错误消息:
javac Main.java
一切都很好,没有错误或任何东西。然后我尝试:
java 主要
我收到此错误消息:
线程“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。程序将退出。
【问题讨论】:
【参考方案1】:试试:
java input.Main
根据您的错误,您的 Main 类位于“input”包中。运行类时需要指定包名,而不是文件名。
【讨论】:
并从包含input
目录而不是input
目录本身(应该包含Main.class
)的目录运行。【参考方案2】:
打开终端并粘贴此命令:
export CLASSPATH=.:/usr/local/tomcat/common/lib/jsp-api.jar:/usr/local/tomcat/common/lib/servlet-api.jar:/home/trenog/javokapi/bin/xmlrpc.jar
【讨论】:
这与tomcat无关。【参考方案3】:这看起来像是一个经典的 Classpath 问题。 Eclipse 和 Netbeans 会为您设置类路径,但是当您写入命令行时,您就得靠自己了。
假设您使用的是 BASH,请尝试在命令行中输入以下内容:
CLASSPATH=/path/to/your/java/class/file
或者,您也可以从 java 命令行执行此操作:
java -cp /path/to/your/java/class/file Main
关注this link了解更多信息。
编辑:好吧,我看到你想通了。恭喜。
【讨论】:
【参考方案4】:类加载器根本找不到类 input.Main。
该类应位于目录./input
,该目录内的文件应称为Main.class
,java 命令应为'java input.Main
'。
【讨论】:
以上是关于为啥我不能使用 Ubuntu 编译我的 Java 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
win10我安装了gcc编译器可以运行gcc命令,为啥不能使用g++命令呢?如图
为啥我不能在 Ubuntu 12.04 中设置 JAVA_HOME VARIABLE?