使用javac编译时包含Swing

时间:2011-02-10 02:13:36

标签: java compiler-construction javac

我编译和jar来源就好了,但是当我运行它时,它会抱怨:

java.lang.ClassNotFoundException: javax.swing.JPanel

我想在编译时我必须包含Swing库,但是我该怎么做?

我在系统中包含了每个rt.jar:

javac -classpath /usr/lib/jvm/java-1.5.0-gcj-4.4/jre/lib/rt.jar:/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar:/home/me/equinox.jar *java

仍然编译好,在跑步时仍然崩溃。

4 个答案:

答案 0 :(得分:2)

看起来您正在使用GCJ。这是一个旧项目,试图将Java实现生成为纯粹的开源。

他们大约有一半,但实施远非完美。现在,最好完全避免它,而是使用OpenJDK(或Oracle/Sun JDK,如果不需要开源的话。)

在Ubuntu上,您可以使用update-java-alternatives将系统配置为其他Java实现:

sudo update-java-alternatives -s java-6-openjdk

顺便说一句,从不需要在类路径中明确指定rt.jar,因为它始终可以自动使用。此外,使用来自不同 JVM的多个 rt.jar是一种灾难。

答案 1 :(得分:0)

如果运行代码,编译工作正常。 很遗憾你错过了这个特殊的类,因为它是标准库的一部分。在大多数Java发行版中,这是在rt.jar

答案 2 :(得分:0)

您目前的JDK路径是什么($ PATH或%PATH%)?你的整条道路是什么?您当前的CLASSPATH环境变量是什么?您的问题与运行时环境有关。您不应该将rt.jar添加到类路径中。如果您安装了正确的JVM,那么java不需要rt.jar和tools.jar的位置。我怀疑你有JVM的路径问题。

此外,您用于运行程序的命令行是什么?

答案 3 :(得分:0)

您不需要包含rt.jar,它包含在java vm的默认类加载器中。

您需要找出默认版本的java:

java --version

如果你正在运行ubuntu,它很可能是openjdk java,这很好。如果是gcj,请尝试使用openjdk或sun-jdk运行它。

另外,准确显示你如何运行jar。

相关问题