簡體   English   中英

從 .classpath 中刪除絕對依賴路徑; 相對路徑不起作用

[英]remove absolute dependency path from `.classpath`; relative path doesn't work

我不是 Java 程序員。
我過去做過一些 Java 編程,但沒什么大不了的。

我使用了一個工具,寫在 Java 中,我想改進它。

我得到了該工具的來源。
我想做一個小小的改變
(在它如何解析輸入文件中,添加對不同文件格式的支持)
然后編譯工具
將更新上傳到存儲庫
故事結局。

但首先我必須能夠編譯原始項目。
我在 Visual Studio Code 中打開了項目。
我有錯誤

Project 'UVW' is missing required library: 'D:\xyz-workspace\java\_libraries\jfreechart-1.0.19\lib\jcommon-1.0.23.jar'
Project 'UVW' is missing required library: 'D:\xyz-workspace\java\_libraries\jfreechart-1.0.19\lib\jfreechart-1.0.19.jar'
Project 'UVW' is missing required library: 'D:\xyz-workspace\java\_libraries\gson-2.2.2.jar'
The project cannot be built until build path errors are resolved

偉大的,
做這個工具的人在他自己的電腦上添加了對庫的依賴。
(這里為了隱私我把項目名換成了UVW ,作者名字換成了xyz )。

我檢查.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry exported="true" kind="lib" path="D:/xyz-workspace/java/_libraries/jfreechart-1.0.19/lib/jcommon-1.0.23.jar"/>
    <classpathentry exported="true" kind="lib" path="D:/xyz-workspace/java/_libraries/jfreechart-1.0.19/lib/jfreechart-1.0.19.jar" sourcepath="D:/xyz-workspace/java/_libraries/jfreechart-1.0.19/source">
        <attributes>
            <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="D:/xyz-workspace/java/_libraries/jfreechart-1.0.19/source"/>
        </attributes>
    </classpathentry>
    <classpathentry exported="true" kind="lib" path="D:/xyz-workspace/java/_libraries/gson-2.2.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

所以在項目目錄中,我只是創建了xyz-workspace ,我復制了結構並將缺少的庫放在那里。
然后我將路徑編輯為相對路徑:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry exported="true" kind="lib" path="./xyz-workspace/java/_libraries/jfreechart-1.0.19/lib/jcommon-1.0.23.jar"/>
    <classpathentry exported="true" kind="lib" path="./xyz-workspace/java/_libraries/jfreechart-1.0.19/lib/jfreechart-1.0.19.jar" sourcepath="./xyz-workspace/java/_libraries/jfreechart-1.0.19/source">
        <attributes>
            <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="D:/xyz-workspace/java/_libraries/jfreechart-1.0.19/source"/>
        </attributes>
    </classpathentry>
    <classpathentry exported="true" kind="lib" path="./xyz-workspace/java/_libraries/gson-2.2.2.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

行,
但這仍然失敗:

Project 'UVW' is missing required library: 'xyz-workspace\java\_libraries\jfreechart-1.0.19\lib\jcommon-1.0.23.jar'
Project 'UVW' is missing required library: 'xyz-workspace\java\_libraries\jfreechart-1.0.19\lib\jfreechart-1.0.19.jar'
Project 'UVW' is missing required library: 'xyz-workspace\java\_libraries\gson-2.2.2.jar'
The project cannot be built until build path errors are resolved

即使路徑是正確的。

我試圖在網上查找如何正確執行此操作,但只發現不相關的結果。
我不接受我把他電腦上的路徑換成我電腦上的絕對路徑的情況。
我希望該項目僅具有自依賴性,所有依賴項都在其中。

我不知道如何實現它。

顯然,我下載了錯誤版本的項目。
在新版本中,這些庫已經存在於_libraries子目錄中。

.classpath仍然包含項目內目錄的絕對路徑。 但因此時間編輯它起作用了:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="lib" path="_libraries/gson-2.2.2.jar"/>
    <classpathentry kind="lib" path="_libraries/ini4j-0.5.4.jar"/>
    <classpathentry kind="lib" path="_libraries/jfreechart-1.0.19/lib/jcommon-1.0.23.jar"/>
    <classpathentry kind="lib" path="_libraries/jfreechart-1.0.19/lib/jfreechart-1.0.19.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

區別似乎是我原來的例子中的exported="true"

這是一個不完整的答案,因為我達到了目標,我可以在沒有絕對路徑依賴的情況下編譯項目,但我仍然不明白一切。

暫無
暫無

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

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