我正在尝试在 64 位 Fedora 上运行 .jar,它在 Windows 上完美运行。
首先我尝试:
java -version
java version "1.6.0_17"
java -jar myprog_TABS_Dec30.jar
我得到了:
Exception in thread "main" java.lang.ClassCastException: javax.swing.tree.DefaultMutableTreeNode cannot be cast to myprog.view.tree.DataObject_Node
然后我检查了:
file Analyseries2011_TABS.class
Analyseries2011_TABS.class: compiled Java class data, version 49.0 (Java 1.5)
所以我安装了:jdk-1_5_0_22-linux-amd64-rpm.bin:
/usr/java/jdk1.5.0_22/bin/java -jar myprog_TABS_Dec30.jar
结果:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/swing/filechooser/FileNameExtensionFilter
最后我查看了 META-INF 目录中的 MANIFEST.MF :
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.7.0_01-b08 (Oracle Corporation)
Class-Path:
X-COMMENT: Main-Class will be added automatically by build
Main-Class: myprog.core.main.myprog_TABS
好吧,让我们尝试一下:
/usr/java/jre1.7.0_01/bin/java -jar myprog_TABS_Dec30.jar
你猜怎么着...
Exception in thread "main" java.lang.ClassCastException: javax.swing.tree.DefaultMutableTreeNode cannot be cast to myprog.view.tree.DataObject_Node
我的想法已经用完了。
最佳答案
javax.swing.filechooser。 FileNameExtensionFilter是在 Java 6 中引入的,因此您无法使用 Java 5.0 编译代码也就不足为奇了。
由于您无权访问源代码,我们将不得不猜测发生了什么。 ClassCastException 意味着代码会执行以下操作:
DefaultMutableTreeNode object1 = doSomething();
DataObject_Node object2 = (DataObject_Node)object1;
但是 DataObject_Node 不是 DefaultMutableTreeNode 的子类,因此您会收到 ClassCastException,因为您不能这样做。所以,对我来说,它看起来像是代码中的错误。
关于java - jar 无法在 Linux 上运行 : ClassCastException/javax/cannot be cast to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583967/