簡體   English   中英

如何在 eclipse 中設置 ATTR_USE_CLASSPATH_ONLY_JAR 而無需編輯 Java > 8 的啟動配置?

[英]How to set ATTR_USE_CLASSPATH_ONLY_JAR in eclipse without editing launch configuration for Java > 8?

在 eclipse 中,可以指定從臨時 JAR 引用 jar 文件以避免類路徑長度限制。 這可以通過在運行/調試配置中選擇類路徑選項卡中的復選框來實現:

在此處輸入圖像描述

這很好用,但是當使用大於 8 的 java 版本時,此選項不再公開,如下所示:

在此處輸入圖像描述

選項卡classpath不再存在。 它被Dependencies選項卡所取代,該選項卡不顯示此復選框。

但是,需要使用它的原因仍然存在於 java 8 之后的世界中。 類路徑可能會超過操作系統限制,尤其是在 Windows 10 環境中,該限制 (32k) 比 Mac/linux (200k+) 低得多。 On Windows 10, this limit can easily be exceeded if one is using spring boot and few other technologies (jackson, rx, kafka, redis, aws, etc.) that are rather standard and ubiquitous in the enterprise development environment.

In a comment to eclipse bug 558495 it is suggested that one manually edits the eclipse launch configuration, and set the value for the key attribute org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR to 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中報告了這個問題,但到目前為止它沒有得到任何關注。

臨時 JAR 文件技巧可以解決 Windows 中的行長限制,但在使用 Java 9 或更高版本時並非在所有情況下都適用。

相反,對於 Java 9 或更高版本,將支持使用@argfile從 Eclipse 2020-12 (將於 2020 年 12 月 16 日發布)開始。 @argfile選項可以在Arguments選項卡中找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM