我有一个带有大量 jar 文件依赖项的大型 Java 项目。当我尝试从 Eclipse 或 Netbeans 运行项目(使用 exec)时,Maven 抛出异常,结果证明类路径上的条目数量过多(仅包含所需条目的 2/3)。有谁知道这个的解决方法?(除了构建一个可执行的 jar 并从终端运行它。)是否可以“扩展”“类路径缓冲区”大小?
3 回答
这是一个 Maven exec 插件的错误,它记录在MEXEC-68中,记者创建了一个补丁,所以我希望它会尽快解决。
一种解决方法是使用 maven-jar-plugin 的此配置将类路径添加到清单文件,将依赖项添加到文件夹,然后仅将该文件夹添加到 CLASSPATH envvar。
例如:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
...
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
...
</plugin>
</plugins>
</build>
...
</project>
这将添加到清单中,例如:
Class-Path: plexus-utils-1.1.jar commons-lang-2.1.jar
如果该 JAR 位于 CLASSPATH 文件夹中,则可以使用 maven exec 插件运行 JAR,隐藏类路径,如下所示:
mvn exec:exec [...] -Dexec.classpathScope="test"
我使用 -Dexec.classpathScope="test" 使插件忽略依赖项并仅添加范围测试中的依赖项。
此问题已在 Netbeans 6.10M1 中修复。请查看错误 188864。如果您有旧版本,您仍然可以自己修复此问题(您只需在 org-netbeans-modules-maven.jar 中编辑一个 xml 文件)。
然后,不要忘记查看 Maven 最佳实践 ( http://wiki.netbeans.org/MavenBestPractices#Binding_Maven_goals_to_IDE_actions ),其中解释了如何将 Maven 目标绑定到 IDE 操作。
问候,
马赫
在 Java 6(我希望你使用它)中,你可以在类路径条目中使用通配符。对于确切的语法检查这个页面设置类路径并通过搜索“ Understanding the class path and package names
”搜索到正确的部分。
或者,您尝试通过将所有必需的 jar 放在具有短路径的单个文件夹中来缩短路径。例如C:\jars\