在Ubuntu中将库添加到Java CLASSPATH

时间:2012-09-27 13:17:45

标签: ubuntu java

我不确定我的问题是否与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 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:7)

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

export CLASSPATH=$CLASSPATH:/path/to/comm.jar

答案 2 :(得分:1)

您可以尝试按以下方式执行此操作:

  1. javac -cp comm.jar XXXXX.java
  2. export CLASSPATH=comm.jar:$CLASSPATH

答案 3 :(得分:1)

如果要编译名为foo.bar.Baz的类,则必须将Baz.java文件放在foo/bar目录中,然后从javac启动foo父目录,即如果列出当前目录的内容,则可以看到列出的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针对现有档案进行编译。