尝试在 Debian Jessie 上执行 .jar 时出现 Java 异常错误

标签 java linux debian

我的一位老师在 2005 年左右创建了一个 java 程序,他一直使用 MacOS。他将 .jar 发送给我和一个同学,都是 linux(我是 Debian 8,他是 Ubuntu),我们无法执行该程序,因为它返回了很多异常。

起初我认为这可能是因为程序太旧了,但我的老师可以在他 1 岁的更新 mac 上完美运行它。

选中并且 Debian 默认带有 OpenJDK。还没有安装任何东西,我应该安装什么让它运行吗?

PS:如果我双击 .jar,我可以看到文件夹。

异常(exception)情况是:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jfree/chart/ChartPanel
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:803)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    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)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2625)
    at java.lang.Class.getMethod0(Class.java:2866)
    at java.lang.Class.getMethod(Class.java:1676)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.jfree.chart.ChartPanel
    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)
    ... 18 more

我对 Java 一无所知,所以如果您可以尝试尽可能地了解基础知识,请多多指教。我也是 Debian 的新手,所以我真的不知道默认安装是否缺少软件包。

编辑:

MANIFEST.MF 文件是

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_24-b07-334-10M3326 (Apple Inc.)
Class-Path: lib/Jama-1.0.2-ed.jar lib/jfreechart-1.0.6.jar lib/ant.jar
lib/jcommon-1.0.10.jar
X-COMMENT: Main-Class will be added automatically by build
Main-Class: com.cmcweb.electronicstructure.CompleteDOSPlotter

最佳答案

您必须下载 JFreeChart.jar 库 ( http://www.java2s.com/Code/Jar/j/Downloadjfreechartjar.htm ),因为您的老师没有在他的 jar 文件中包含外部类。

将 JFreeChart.jar 放入/your_linux_path/jre/lib/ext 文件夹,然后它应该可以工作。

附言您必须对 Jama.jar 和 jcommon.jar 做同样的事情

关于尝试在 Debian Jessie 上执行 .jar 时出现 Java 异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41472761/

相关文章:

java - Spring Data REST - 通过使用实体列表无法识别字段 "_embedded",Java HATEOAS

linux - 为什么 exec+tee 输出显示乱序?

java - 处理开启虚拟串口

linux - Nagios 中长时间运行的服务检查

mysql slave复制失败

linux - 消耗带宽

java - Android/Java : how to send notifications to user,,即使应用程序未使用 "actively"?

java - 使用自定义异常处理测试 REST 端点

java - XMLHttpRequest.open() 之后不会出现 URL 中的 AJAX 变量

linux - debian redis update-rc.d 错误 - redis 和 nginx 之间存在循环