2016-07-27 28 views
0

我是Java新手,我想用Maven构建JUNG 2.2库,因为这似乎是构建它的标准方法。我以前从未使用过Maven,但安装并运行mvn clean install并不困难。现在,JUNG似乎有6个子包(API,实现,算法,I/O,可视化和样本),每个包都有它的目录(例如,jung-api是API包的目录)。目标install会生成一些Java .class文件,并将它们放入6个目录中每一个的target/classes/目录中。用Maven构建JUNG库

我很困惑下一步做什么为了使用库:我只需要添加jung目录路径到我的CLASSPATH变量在shell中?但是后来我不得不导入jung-api.target.classes.edu.uci.ics.jung.graph.*,它不仅非常长,而且还有一个“ - ”,Java编译器不希望包名!甚至当我绕过“ - ”的问题,我得到一个运行时错误:

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Supplier 

我使用的是OS X 10.9.5的javac 1.8.o_91。

+0

'mvn clean install'应该将JAR安装在您本地的Maven仓库中。在任何情况下(当你只是做'mvn clean package'时),'target'目录应该包含JAR。如果有*无* JAR,那么构建可能会出现问题。 (如果是这样的话:Maven输出中是否隐藏了任何错误消息?)。在任何情况下,它都应该**不是必须的,以便用'jar -xf'或其他方式手动地将JAR拼凑在一起...... – Marco13

+0

我希望你能原谅我,但我甚至不知道在哪里找到我的本地Maven仓库。或者,也许这是我家的新的'.m2'目录(它包含相同的JAR和其他东西)。 – Giorgio

+0

是的,就是这样。任何使用Maven编译的库所需的所有依赖项都将被复制到那里。基本上,'mvn clean package'只在本地生成JAR(到'target'文件夹中),而'mvn clean install'会将您新建的JAR复制到您的Maven repo中。 – Marco13

回答

0

我找到的解决方案是jar -xfjung-samples目录的.jar文件的每一个,然后将通过jar中,我加入到我的CLASSPATH变量的地方提取的所有目录。至少这似乎工作。