gpt4 book ai didi

java - 从 Jar 文件加载类 : java. lang.InstantiationException

转载 作者:行者123 更新时间:2023-12-01 10:34:38 25 4
gpt4 key购买 nike

我得到了这段代码来从 jar 文件实例化一个 Life 类:

import com.life.Life;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {

public static void main(String[] args) {
try{
File file = new File("Life.jar");

URL url = file.toURI().toURL();
URL[] urls = new URL[]{url};

ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass("com.life.Life");

Life life = (Life) cls.newInstance();

System.out.println("Message: "+life.getMessage());
}catch(Exception e){
e.printStackTrace();
}
}

}

这是Life.jar的内容

public class Life {

public String getMessage(){
return "Life is Beautiful!";
}

}

这是我的界面名称Life

package com.life;

public interface Life {

public String getMessage();

}

上面的代码会抛出错误:

java.lang.InstantiationException: com.life.Life
at java.lang.Class.newInstance0(Class.java:340)
at java.lang.Class.newInstance(Class.java:308)
at com.Main.main(Main.java:20)
BUILD SUCCESSFUL (total time: 0 seconds)

代码有什么问题?如何解决这个问题?

最佳答案

发生这种情况是因为您的接口(interface)也名为 Life(java 尝试实例化接口(interface))。将 public interface Life 更改为 public interface LifeInterface ,然后让您的 Life 类实现如下所示:

public class Life implements LifeInterface
{
@Override
public String getMessage()
{
return "Life is Beautiful!";
}
}

关于java - 从 Jar 文件加载类 : java. lang.InstantiationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34845916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com