如何在eclipse中设置attr\u use\u classpath\u only\u jar而不编辑java>8的启动配置?

mbyulnm0  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(385)

在eclipse中,可以指定从临时jar引用jar文件,以避免类路径长度限制。这可以通过选中运行/调试配置中classpath选项卡中的复选框来实现:

这很好,但当使用java版本大于8时,此选项不再公开,如下所示:

选项卡 classpath 已经不在了。它被替换为 Dependencies 选项卡,不显示此复选框。
然而,人们需要使用它的原因仍然存在于后Java8世界中。类路径可能会超过操作系统的限制,特别是在windows10环境中,这个限制要比mac/linux(200k+)低得多(32k)。在windows10上,如果使用spring-boot和其他一些在企业开发环境中非常标准和普遍的技术(jackson、rx、kafka、redis、aws等),就很容易超过这个限制。
在对eclipsebug558495的注解中,建议手动编辑eclipse启动配置,并设置key属性的值 org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JARtrue :

<?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 bug 561218中报告了这个问题,但到目前为止还没有得到关注。

bfrts1fy

bfrts1fy1#

临时jar文件技巧在windows中绕过行长度限制可能适用于您的情况,但在使用java9或更高版本时并非所有情况下都适用。
相反,对于Java9或更高版本,从Eclipse2020-12(将于2020年12月16日发布)开始,将支持使用@argfile。@argfile选项可以在arguments选项卡中找到。

相关问题