我正在尝试做一些非常简单的事情。我现在要做的就是构建一个包含相应类的文件。
我有一个名为Promomon.java的文件
class Promomon {
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
简单,一切都很好。我可以编译并运行,我看到Hello World!。
现在我添加了我想要使用的类。
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
直接来自Apache POI文档。
JAVA_HOME设置为“/ usr / lib / jvm / java-6-openjdk / jre /”
$ echo $ JAVA_HOME
/ usr / lib / jvm / java-6-openjdk / jre /
我自己使用Ant建立了POI罐,没问题。
我将jar放入java的lib目录。 (/ usr / lib中/ JVM / JAVA -6-的openjdk / JRE / LIB /)
$ ls -l / usr / lib / jvm / java-6-openjdk / jre / lib / poi *
-rw-r - r-- 1 root root 1539296 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-3.6-20100908.jar
-rw-r - r-- 1 root root 69142 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-contrib-3.6-20100908.jar
-rw-r - r-- 1 root root 181907 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-examples-3.6-20100908.jar
-rw-r - r-- 1 root root 412788 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-ooxml-3.6-20100908.jar
-rw-r - r-- 1 root root 3774336 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-ooxml-schemas-3.6-20100908.jar <登记/>
-rw-r - r-- 1 root root 795893 2010-09-08 12:40 /usr/lib/jvm/java-6-openjdk/jre/lib/poi-scratchpad-3.6-20100908.jar
我的类路径设置为此目录。
$ echo $ CLASSPATH
/ usr / lib / jvm / java-6-openjdk / jre / lib /
我到底在做什么?我也试过使用预先构建的二进制文件,没有变化。
谢谢你的帮助!
答案 0 :(得分:2)
当您在类路径中指定jar时,您不能只指定它们所在的目录,您需要明确列出jar(jdk6中Jon Skeet引用的更改可能会更改此但我不记得了它要么)。
我不会把这些jar放在jdk lib目录中。在您的Promomon.java文件的src目录旁边创建一个lib目录,将您的jar添加到其中,并在编译和运行时在类路径中单独列出jar。当我说classpath我不是指环境变量。以下是一些替代方案:
从“Hello World”转到使用第三方库的程序是Java的重要一步。获取编译和运行的简单方法会停止工作。
BTW我查了here,JDK6的变化是你可以在类路径中使用通配符,所以不要单独列出jar,如
-cp=/usr/myapp/classes:/usr/myapp/lib/foo.jar:/usr/myapp/lib/bar.jar
你可以说
-cp=/usr/myapp/classes:/usr/myapp/lib/*.jar
答案 1 :(得分:1)
将jar文件直接放在lib目录中不会有帮助。您可以将它们放在jre / lib / ext,或中,您可以指定另一个可以指定的ext目录(javac -extdirs=...
和java -Djava.ext.dirs=...
),或 jar文件明确。