DrJava在类路径中使用jar库创建jar

时间:2018-08-09 00:44:53

标签: java eclipse jar classpath drjava

几天来,我一直在尝试自己解决这个问题,但是我无法使创建的.jar文件与引用其他.jar库的类一起成功运行。

我在Mac上将DrJava与JDK 0.8_91结合使用。我知道DrJava不是大多数人选择的编辑环境,但是它使我最能找出这个特殊问题,并且应该可以使用任何编辑器来解决,因此我更喜欢不涉及任何建议的建议。切换IDE(我已经尝试过其他)。

我的项目文件结构如下:

java_projects
  |
  |---App
  |    |---bin
  |    |    |---com
  |    |         |---app
  |    |              |---Src1.class
  |    |              |---Src2.class
  |    |              |---Etc.class
  |    |
  |    |---com
  |    |    |---app
  |    |         |---Src1.java
  |    |         |---Src2.java
  |    |         |---Etc.java
  |    | 
  |    |---lib
  |         |---Lib1.jar
  |         |---Lib2.jar
  |         |---Etc.jar
  |
  |---App.drjava

App.drjava是DrJava项目文件,用于跟踪项目结构。

我将java_projects/App/lib/中的所有库.jar文件添加到了项目设置中DrJava的“额外类路径”区域。

我将项目工作目录设置为java_projects/App/

我将项目根目录设置为java_projects/App/

我将构建目录设置为java_projects/App/bin/

我确保每个.java源文件都以package com.app;开头

代码使用所有import语句正确编译,将所有.class文件整齐地放置在java_projects/App/bin文件夹中,如文件树形图所示。

已编译的可执行.class文件与其他.class文件和.jar库一起正确运行。

但是,当我尝试从java_projects/App/bin/中的.class文件创建项目.jar文件并尝试运行该App.jar文件时,它失败并出现以下错误(这些库实际上未称为Lib1。 jar等):

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/batik/swing/JSVGCanvas

我知道JSVGCanvas类包含在一个.jar库中,因为该程序使用java_projects/App/bin/中的.class文件运行,并且我希望DrJava的“额外类路径”参数能够处理引用到App.jar清单文件中的库。我还尝试使用自己的清单文件创建App.jar,并使用jar命令行工具获得相同的结果。

我也尝试将App.jar移到文件树中的其他位置,但仍无法正常运行。这是我的自定义manifest.mf文件的样子:

Main-Class: com.app.App
Class-Path: 
 lib/batik-1.10.jar
 lib/batik-svg-dom-1.10.jar
 lib/batik-all-1.10.jar
 lib/batik-svggen-1.10.jar
 lib/batik-anim-1.10.jar
 lib/batik-svgpp-1.10.jar
 lib/batik-awt-util-1.10.jar    
 lib/batik-swing-1.10.jar
 lib/batik-bridge-1.10.jar
 lib/batik-transcoder-1.10.jar
 lib/batik-codec-1.10.jar
 lib/batik-ttf2svg-1.10.jar
 lib/batik-css-1.10.jar
 lib/batik-util-1.10.jar
 lib/batik-dom-1.10.jar
 lib/batik-xml-1.10.jar
 lib/batik-ext-1.10.jar
 lib/fop-transcoder-allinone-2.2.jar
 lib/batik-extension-1.10.jar
 lib/serializer-2.7.2.jar
 lib/batik-gui-util-1.10.jar
 lib/w3c-dom.jar
 lib/batik-gvt-1.10.jar
 lib/xalan-2.7.2.jar
 lib/batik-parser-1.10.jar
 lib/xercesImpl-2.9.1.jar
 lib/batik-rasterizer-1.10.jar
 lib/xml-apis-1.3.04.jar
 lib/batik-script-1.10.jar
 lib/xml-apis-ext-1.3.04.jar
 lib/batik-slideshow-1.10.jar
 lib/xmlgraphics-commons-2.2.jar
 lib/batik-squiggle-1.10.jar

如果您对我所缺少的内容有任何了解,请帮助我!我希望这样的障碍不会成为项目杀手,但是Java的java-class-jar-package-import-classpath的细微差别开始让我发疯:L

在此先感谢您!

更新 我最终放弃了,切换到Eclipse IDE。我花了几个小时来正确设置该项目,但是一旦成功,它就像梦一样。

万一您好奇,那么Eclipse设置使我花了这么长时间的原因是,总而言之,我试图将源文件复制到Eclipse项目中,并且我想Eclipse处理该工作流程的能力很差。因此,如果要将项目移至Eclipse,据我所知,最快的方法是先在新项目中设置文件/包/库层次结构,然后通过Eclipse创建新的源文件,然后从每个文件中复制文本。归档到新的。听起来很乏味,但是其他任何方式和Eclipse都无法正确实现项目层次结构。

0 个答案:

没有答案