我试图从shell文件中运行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)
shell命令
java -jar /home/flussi/xmlEncoder/encoder.jar
答案 0 :(得分:1)
堆栈跟踪中有证据表明您正在尝试使用GCJ工具链来运行该JAR文件。 (以下评论中的证据证实了这一点。)
这是真正的问题。
不幸的是,GCJ的开发在完成对Java 1.5的支持之前就已停滞不前。看起来您正在尝试运行依赖于Java 1.7类(java.nio.file.LinkOption
)的JAR文件
我的建议:
如果您不管理机器,请让经理进行操作。或者尝试在其他地方运行JAR文件。
很可能需要对应用程序进行重大改写才能使其在GCJ上运行。这将是浪费精力,因为GCJ实际上是一个死Java平台。
1 - Java 7可行,但几年前就被EOL了。
答案 1 :(得分:0)
Hi运行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
encoder.jar
您的public static void main
内的java类文件已声明myWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (request.getUrl().toString().startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL, request.getUrl());
view.getContext().startActivity(intent);
}
return super.shouldOverrideUrlLoading(view, request);
}
});