![](/img/trans.png)
[英]Built jar with ant: Exception in thread “main” java.lang.NoClassDefFoundError
[英]Exception in thread “main” java.lang.NoClassDefFoundError from JAR
我正在嘗試從外殼文件運行jar可執行文件。 我的罐子的路徑:
/home/flussi/xmlEncoder/encoder.jar
但我總是得到這個錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: smaf.encoder.Encoder
at java.lang.Class.initializeClass(libgcj.so.7rh)
Caused by: java.lang.ClassNotFoundException: java.nio.file.LinkOption not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/home/flussi/xmlEncoder/encoder.jar], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
at java.net.URLClassLoader.findClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.ClassLoader.loadClass(libgcj.so.7rh)
at java.lang.Class.initializeClass(libgcj.so.7rh)
外殼命令
java -jar /home/flussi/xmlEncoder/encoder.jar
在堆棧跟蹤中有證據表明您正在嘗試使用GCJ工具鏈來運行該JAR文件。 (下面您評論中的證據證實了這一點。)
這是真正的問題。
不幸的是,GCJ的開發在完成對Java 1.5的支持之前就停滯了。 看起來您正在嘗試運行依賴於Java 1.7類( java.nio.file.LinkOption
)的JAR文件
我的建議:
如果您不管理機器,請讓管理者去做。 或嘗試在其他地方運行JAR文件。
這很可能需要對應用程序進行重大重寫,才能使其在GCJ上運行。 因為GCJ實際上是一個已死的Java平台,所以這將是浪費的精力。
1-Java 7可以使用,但是幾年前已經停產。
嗨,運行Java應用程序的最佳方法是先設置CLASS_PATH和PATH變量。 如果您當前的jar文件依賴於外部jar文件,您將面臨很多問題。 最好像下面那樣設置路徑變量並運行應用程序:
#!/usr/bin/ksh
export PATH=/usr/java/bin:$PATH
# =/usr/java/bin is your java bin folder
#set environment variable CP with all the jar libraries
CP=/home/flussi/xmlEncoder/encoder.jar
CP=${CP}:/other/jar/somejar.jar
java -Xmx256M -classpath "$CP" "com.myproj.Example"
這是com.myproj.Example
內部Java類文件encoder.jar
,你必須聲明public static void main
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.