2017-05-25 71 views
-1

我遇到問題。如何從Maven(Intellij)開始使用java包來啓動java類

我在intelliJ中編寫了一個Java控制檯應用程序。我添加了maven包org.json.json,如果我在IntelliJ中運行項目一切正常。

如果我與 java Main控制檯啓動類我得到這個錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject

我試着搜索了很多,但沒有任何工程

+0

你怎麼用的IntelliJ類做

細節處都記錄? IntelliJ不會掩蓋您正在運行的Maven命令;您也需要在終端中重現這些內容。你也沒有提到你看過的東西,以及當它不起作用時得到的錯誤。 – Makoto

+0

@HovercraftFullOfEels:是的,規範是正確的,但更多的是數學家在這一點上的答案。 Maven正在爲最終用戶付出沉重的代價,但「將其添加到類路徑」的答案只會讓人困惑。 – Makoto

+0

另一個問題。在我的Class中使用org.json.JSONObject的最簡單方法是什麼? – Ezak

回答

1

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> 
+0

謝謝,適用於我=) – Ezak

0

只是運行一個類從一個控制檯不足夠。您還需要設置類路徑以指向它的所有依賴項,包括json jar。

由於您使用的是Maven,我的建議是使用其「maven-shade-plugin」來創建一個包含您的類和所有json jar類的大型jar,並使用「-jar」選項運行您的類。