为啥我不能使用 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++命令呢?如图

ubuntu12.04编译交叉编译已经安装,为啥还不能编译

ubuntu12.04编译交叉编译已经安装,为啥还不能编译

为啥我不能在 Ubuntu 12.04 中设置 JAVA_HOME VARIABLE?

为啥 PHPMyAdmin 不能写入我的 AWS Ubuntu 12.04 LTS 实例上的配置目录?

为啥我的 gcc 编译器不能识别 bzip2 函数,但允许我包含它们所属的库?