我遇到問題。如何從Maven(Intellij)開始使用java包來啓動java類
我在intelliJ中編寫了一個Java控制檯應用程序。我添加了maven包org.json.json
,如果我在IntelliJ中運行項目一切正常。
如果我與 java Main
控制檯啓動類我得到這個錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
我試着搜索了很多,但沒有任何工程
我遇到問題。如何從Maven(Intellij)開始使用java包來啓動java類
我在intelliJ中編寫了一個Java控制檯應用程序。我添加了maven包org.json.json
,如果我在IntelliJ中運行項目一切正常。
如果我與 java Main
控制檯啓動類我得到這個錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject
我試着搜索了很多,但沒有任何工程
maven-shade-plugin是一個有很多選項的插件。爲了創建包含罐子的更簡單的罐子,我使用maven-assembly-plugin。還要驗證org.json.json依賴項中的範圍是否設置爲編譯。 https://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies
例如:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>your.main.class.package.your_main_class</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
</plugin>
謝謝,適用於我=) – Ezak
只是運行一個類從一個控制檯不足夠。您還需要設置類路徑以指向它的所有依賴項,包括json jar。
由於您使用的是Maven,我的建議是使用其「maven-shade-plugin」來創建一個包含您的類和所有json jar類的大型jar,並使用「-jar」選項運行您的類。
你怎麼用的IntelliJ類做
細節處都記錄? IntelliJ不會掩蓋您正在運行的Maven命令;您也需要在終端中重現這些內容。你也沒有提到你看過的東西,以及當它不起作用時得到的錯誤。 – Makoto
@HovercraftFullOfEels:是的,規範是正確的,但更多的是數學家在這一點上的答案。 Maven正在爲最終用戶付出沉重的代價,但「將其添加到類路徑」的答案只會讓人困惑。 – Makoto
另一個問題。在我的Class中使用org.json.JSONObject的最簡單方法是什麼? – Ezak