在 Eclipse 中,可以指定从临时 JAR 引用 jar 文件以避免类路径长度限制。这可以通过在运行/调试配置中选择类路径选项卡中的复选框来实现:
这很好用,但是当使用大于 8 的 java 版本时,此选项不再公开,如下所示:
该选项卡classpath
不再存在。它被选项卡取代,该Dependencies
选项卡不显示此复选框。
但是,需要使用它的原因仍然存在于后 java 8 世界中。类路径可能会超过操作系统限制,尤其是在 Windows 10 环境中,该限制 (32k) 比 Mac/linux (200k+) 低得多。在 Windows 10 上,如果使用 Spring Boot 和少数其他在企业开发环境中相当标准且无处不在的技术(jackson、rx、kafka、redis、aws 等),则很容易超过此限制。
在对 eclipse 错误 558495 的评论中,建议手动编辑 eclipse 启动配置,并将 key 属性的值设置org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR
为true
:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/demoapp/src/main/java/demo/DemoApplication.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="demo.DemoApplication"/>
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="demoapp"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="--spring.profiles.active=dev"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="demoapp"/>
</launchConfiguration>
这行得通,但至少可以说是不方便的。每当对启动配置进行任何更改时,手动设置的值都会重置为false
,因此必须打开位于<workspace>\.metadata\.plugins\org.eclipse.debug.core
目录中的启动配置并再次对其进行编辑。除了不方便之外,这个过程还容易出错,而且不太理想,因为它正在修改 eclipse 正在管理的文件。
有没有办法从 eclipse 的 UI 中做到这一点?是否有其他(更好的?)方法来处理 eclipse 中的长类路径?
几个月前,我在 eclipse 的 bugzilla错误 561218中报告了这个问题,但到目前为止它没有得到任何关注。