java - java.lang.ClassLoader.loadClass 中的错误(未知来源)

标签 java classloader

在我的论文中,我试图用图片处理一些事情,完成它的步骤之一是找到图片中的角。经过一番冲浪,我发现它可以用 Moravec 的角点检测算法来实现。幸运的是,我在这个链接中发现 JFeatureLib 已经实现了 Moravec 的算法:https://code.google.com/p/jfeaturelib/source/browse/src/main/java/de/lmu/ifi/dbs/jfeaturelib/pointDetector/Moravec.java?r=8d96a8fa9a43a0ec7e7084b40169be56bddd6f36

(当然我是在Eclipse的构建路径下导入了JFeatureLib给的jar文件) 所以我在我的项目中使用了链接处的代码,并编写了一些代码来调用它。这是我在其中创建框架、打开图片并在该链接调用 Moravec 算法的代码:

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;




public class Compare{
    public Compare(){
        JFrame frame = new JFrame("Find corners in picture");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = (JPanel)frame.getContentPane();
        JLabel label = new JLabel();
        label.setIcon(new ImageIcon("house.jpg"));
        panel.add(label);
        frame.setLocationRelativeTo(null);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main (String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                new Compare();
            }
        });
        Moravec picture = new Moravec();
    }
}

关键是它在行上返回错误

Moravec picture = new Moravec();

错误是这样的:

Exception in thread "main" java.lang.UnsupportedClassVersionError: de/lmu/ifi/dbs/jfeaturelib/pointDetector/PointDetector : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at Compare.main(Compare.java:32)

你能给我一些建议吗? 非常感谢!

最佳答案

不支持的 major.minor 版本 51.0
您正在尝试在较旧的 Java 版本中运行使用较新 Java 版本编译的 jar。消息提示 de/lmu/ifi/dbs/jfeaturelib/pointDetector/PointDetector 是使用 JDK7 编译的,但您正在尝试使用旧版本(我猜是 Java 6)运行它。

执行 java -version 并查看是否是这种情况。如果是这样,请在您的系统上找到 JDK7 并使用它来运行您的程序。

关于java - java.lang.ClassLoader.loadClass 中的错误(未知来源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946744/

相关文章:

java - tomcat7过滤器使用了错误的过滤器类路径

java - Docker 容器无法使用 Java 12 运行 jacoco 代理

java - hibernate.cfg.xml 已存在于我的项目中,但我收到此错误 hibernate.cfg.xml 未找到

Java - 从套接字 channel 读取

java - 构建保险箱时 Maven 编译错误

java - 外部文件夹中的 Hazelcast 设置

java - 使用 ClassLoader.getResourceAsStream 加载资源在特定机器上不起作用

java - 类加载器的委托(delegate)模型如何确保加载唯一的类?

java - 定义自定义系统类加载器

java - 外部类加载Java类的内存限制