簡體   English   中英

能夠從IntelliJ運行Java程序,但不能從命令行運行

[英]Able to run java program from IntelliJ but not from command line

我正在做一個項目。 我可以從IntelliJ中運行該程序,但是當我嘗試使用

java -cp <my jar> <Main class>

我得到一個java.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: org/nocrala/tools/gis/data/esri/shapefile/ValidationPreferences
    at Converter2.parse(Converter2.java:26)
    at Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: org.nocrala.tools.gis.data.esri.shapefile.ValidationPreferences
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

我怎樣才能解決這個問題?

請問您確切的<Main class>什么? 另外,您如何包裝廣口瓶? 也許您沒有包括所有依賴項jar庫? (也許在這種情況下為nocrala)?

看起來Main.main()已在執行。

我在jar文件上做了一個jar xf ,它只顯示我.classes.java文件的.classes 這給了我一個提示。 基本上, mvn package沒有將依賴項打包到jar文件中。 我搜索了一下,發現對如何依賴打包成鏈接jar 我編輯了pom.xml並在其中粘貼了以下代碼(直接取自上述鏈接)

<build>
    <plugins>
      <!-- any other plugins -->
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>

現在,當我運行mvn package它生成了一個foo-jar-with-dependencies.jar ,我能夠使用java -cp ...從命令行成功執行它。 我還對它進行了jar xf驗證,現在它包含了我所有的依賴項。 文件大小的差異也很大,因為我在項目中引入了許多第三方程序包。

暫無
暫無

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

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