簡體   English   中英

使用 NoClassDefFoundError 導入外部 JAR - 依賴項

[英]Importing external JAR with NoClassDefFoundError - depedencies

我必須在我的項目中使用另一個團隊作為.jar文件提供的庫。 但是,當我使用這個庫運行代碼時,我得到了NoClassDefFoundError 我已經進行了一些調查,我知道如果外部團隊將在類路徑(例如 lib 文件夾)上創建具有所有所需依賴項的jar ,則可以避免這種情況。 所以我的理解是,然后我可以導入提到的庫,所有需要的子 jar 都將在文件夾 lib 中。 問題:我的想法是否正確? 我應該要求另一個團隊為 lib 提供所有子 jar 依賴項嗎? 此解決方案是否有任何替代方案,而無需提供包含所有依賴項的jar ,從而避免此類錯誤?

如果你可以用maven編譯你的項目,那么必須有所有需要的jar文件。 如果您只選擇“jar”文件並執行它,它將失敗,因為您必須在類路徑中包含依賴項。

另一種選擇是構建包含其中所有依賴項的 jar 文件。

例如,使用maven-assembly-plugin

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <archive>
            <manifest>
                <mainClass>com.path.to.your.MainClass</mainClass>
            </manifest>
        </archive>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <appendAssemblyId>false</appendAssemblyId>        
    </configuration>
</plugin>

暫無
暫無

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

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