代码之家  ›  专栏  ›  技术社区  ›  Brad G

导入jar不起作用

  •  1
  • Brad G  · 技术社区  · 16 年前

    我想做一些非常简单的事情。现在我只想构建一个包含适当类的文件。

    我有个文件叫Promomon.java文件

    class Promomon {
      public static void main(String[] args)
      {
        System.out.println("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;
    

    • 我正在使用Ubuntu 10.04。我使用synaptic安装了java(apt get install openjdk-6-jdk)
    • JAVA\u HOME设置为“/usr/lib/jvm/JAVA-6-openjdk/jre/”

      $echo$JAVA\u主页

    • 我自己用Ant构建了POI jars,没问题。


    • -rw-r--r--1根1539296 2010-09-08 12:40/usr/lib/jvm/java-6-openjdk/jre/lib/poi-3.6-20100908.jar
      -rw-r--r--1 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根181907 2010-09-08 12:40/usr/lib/jvm/java-6-openjdk/jre/lib/poi-examples-3.6-20100908.jar
      -rw-r--r--1根412788 2010-09-08 12:40/usr/lib/jvm/java-6-openjdk/jre/lib/poi-ooxml-3.6-20100908.jar
      -rw-r--r--1根目录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根795893 2010-09-08 12:40/usr/lib/jvm/java-6-openjdk/jre/lib/poi-scratchpad-3.6-20100908.jar

    • 我的类路径设置为这个目录。


      /usr/lib/jvm/java-6-openjdk/jre/lib/

    我到底做错了什么?我也尝试过使用预构建的二进制文件,没有任何改变。

    谢谢你的帮助!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Nathan Hughes    16 年前

    当您在类路径中指定jar时,您不能只指定它们所在的目录,您需要显式地列出jar(Jon Skeet在jdk6中提到的更改可能是一个更改,但我也不记得了)。

    我不会把那些jar放在jdk lib目录中。在src目录旁边创建一个lib目录Promomon.java文件文件中添加jar,并在编译和运行时在类路径中单独列出jar。当我说classpath时,我指的不是环境变量。以下是一些备选方案:

    • 创建两个包含编译和运行命令的可执行文件,并将jar文件添加到-cp开关中的内容列表中。
    • 使用像eclipse这样的IDE并指定jar(在eclipse菜单中选择File->BuildPath->Configure Build Path并选择“Libraries”选项卡)。

    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
    
        2
  •  1
  •   Jon Skeet    16 年前

    把jar文件直接放在lib目录中是没有帮助的。你可以把它们放在jre/lib/ext中, 或 javac -extdirs=... 和 java -Djava.ext.dirs=... ), 或

    编辑:我暗自怀疑Java6做了一些改变,使之更容易实现,但我不记得是什么了。以上应该会帮你解决问题,直到有人指出我忘记了什么:)

    推荐文章