我在 eclipse 中有一个 Java NLP 项目(比如 X),它在 maven 中有依赖项,还有一些从外部添加到构建路径的 jar。
现在我已经使用 java swing 为这个项目(x)构建了 UI,这是 eclipse 中的另一个项目(比如 Y)。
当我运行项目 Y(单击按钮时调用项目 X)时,会抛出诸如
之类的错误java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/NERClassifierCombiner
我认为这是因为,项目 Y 无法找到/识别我在项目 X 中添加的外部 jar。
我也尝试将所有这些外部 jar 添加到 Project Y 的构建路径中,但没有任何效果。
您能帮我弄清楚如何处理这些依赖性问题吗? 4天以来一直在挣扎。
谢谢。
最佳答案
您需要首先通过maven添加外部jar。 我可以想到三种方法来做到这一点。
- 通过将 jar 添加到存储库并访问它。 它甚至可以在您的项目中,如下所示,唯一的问题是需要遵循 jar 的 Maven 结构。
<repository> <id>lib</id> <name>lib</name> <releases> <enabled>true</enabled> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <url>file://${project.basedir}/lib</url> </repository>
- 您可以将 jar 添加到 lib 文件夹,并添加范围级别的系统依赖项,例如
<dependency> <groupId>myjar_1.0</groupId> <artifactId>myjar_1.0</artifactId> <scope>system</scope> <version>1.0</version> <systemPath>${basedir}\src\lib\myjar_1.0.jar</systemPath> </dependency>
- 通过maven将外部jar安装到本地存储库,然后将它们添加为依赖项,但是,此方法将使您在任何新系统上构建失败,在新系统中您 checkout 代码并尝试构建项目。
但是,强烈建议不要使用第二种和第三种方法。
此外,考虑使用 Maven Shade 插件制作一个 fat jar 子,这样所有必需的 jar 都已经存在于您的 jar 中。
关于java - 依赖项问题 - Eclipse Java 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078369/