9

我不确定我的问题是否与 Ubuntu 或 Java 更相关,所以请原谅我!

我正在尝试编译 java 程序,但出现以下错误:

package javax.comm does not exist

我已经下载了所需的软件包comm.jar,但我不知道我应该如何/在哪里安装/复制这个文件。

我在某处读到这应该在CLASSPATH 文件夹中,但我没有这个文件夹。

这就是我得到的,java -version我想这意味着我已经在我的系统中安装了 Java:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK Server VM (build 20.0-b12, mixed mode)

我也有这些文件夹/usr/lib/jvm/

default-java             java-1.7.0-openjdk-i386  java-6-openjdk-i386
java-1.6.0-openjdk       java-6-openjdk           java-7-openjdk-common
java-1.6.0-openjdk-i386  java-6-openjdk-common    java-7-openjdk-i386
4

4 回答 4

13

通常,您在使用开关启动 java 程序时指定类路径 java -cp your.jar xxxx.java

但是您也可以通过将 jar 复制到 default-java/jre/lib/ext 文件夹来将其永久添加到您的 java 安装中。

最后看看这个问题:Setting multiple jars in java classpath

于 2012-09-27T13:23:57.807 回答
8

环境变量 CLASSPATH 包含一个以冒号分隔的 Java 应该搜索类的位置列表。尝试

export CLASSPATH=$CLASSPATH:/path/to/comm.jar
于 2012-09-27T13:24:34.883 回答
1

您可以尝试如下操作:

  1. javac -cp comm.jar XXXXX.java 或者
  2. export CLASSPATH=comm.jar:$CLASSPATH
于 2012-09-27T13:21:54.547 回答
1

如果你想编译一个名为 的类foo.bar.Baz,你必须把Baz.java文件放在一个目录中 foo/barjavacfoo的父目录启动,即如果你列出当前目录的内容,你可以看到foo列出的内容。或者,还有-sourcepath命令行开关:

javac -sourcepath .:/home/asdf/qwerty foo.bar.Baz.java

假设您的类声明如下

import foo.bar.*;
public class Baz {}

您必须将此代码放在一个文件中,并在调用编译器之前/home/raf/foo/bar/Baz.java切换到该目录。/home/raf

如果 javac 在其源路径中找不到目录树,它将输出“包 foo.bar 不存在”错误。foo/bar所以你要么切换到正确的目录,要么使用-sourcepath开关指向项目的根目录,即包含javax/comm. 将您的源代码放在这样的目录中:

+ /home/raf/project/src
|
+-/javax
  |
  +-/comm

并从src目录调用 javac

cd /home/raf/project/src
javac $filenames

或使用上述开关

javac -sourcepath /home/raf/project/src $filenames

您需要调整CLASSPATH以让 javac 针对现有档案进行编译。

于 2012-09-27T13:33:34.810 回答