尝试在Java运行时从jar文件加载类时发生ClassNotFoundException

钱包:

我正在尝试从jar文件中的类动态执行函数。我有jar文件的位置,类的名称以及其中的函数作为字符串。

我看着这些问题,但没有一个答案对我有用:

如何在运行时动态加载Jars?

尝试在运行时从外部JAR加载类时发生ClassNotFoundException

如何在运行时加载jar文件

动态加载罐子

在运行时动态加载jar?

这是到目前为止我得到的:在主程序中:

    public class Main
    {

        public static void main(String[] args)
        {
            File file = new File("E:\\DeSKtop\\hw.jar");   
            String lcStr = "Main1";   
            URL jarfile;
            try {
                jarfile = new URL("jar", "","file:" + file.getAbsolutePath()+"!/");
                URLClassLoader cl = URLClassLoader.newInstance(new URL[] {jarfile });   
                Class loadedClass = cl.loadClass(lcStr);
                Method method = loadedClass.getDeclaredMethod("returnHW");
                Object instance = loadedClass.newInstance();
                Object result = method.invoke(instance);
                //System.out.println(method.invoke());
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
            //System.out.println(loadLibrary(myJar));
            catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SecurityException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

在jar文件中,我尝试加载:

public class Main1 {
    public static void main(String[] args)
    {

    }
    public static String returnHW()
    {
        System.out.println("HlloWOrld");;
        return "Hello Wrld!";
    }

}

当我尝试运行主程序时,得到以下信息:

java.lang.ClassNotFoundException: Main1
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.net.FactoryURLClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at Main.main(Main.java:22)

你能告诉我我做错了什么吗?先感谢您。

恐龙:

解决方案是您还必须声明软件包。

如果您在存储类名称的位置更新了变量lcStr,以包括该软件包,则该变量将起作用。

例:

        String lcStr = "com.company.Main1";

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试在运行时从外部JAR加载类时发生ClassNotFoundException

运行JAR时发生ClassNotFoundException,在IntelliJ IDEA中运行时没有错误

AWS Lambda尝试访问dynamoDB时发生运行时错误-ClassNotFoundException

如何在运行时从文件夹或JAR加载类?

在CMD中运行时发生ClassNotFoundException

如何在运行时动态加载JAR文件?

如何在运行时加载jar文件

如何制作 jar 文件以在运行时加载图像

运行 .jar 文件时的 JavaFX 运行时异常

在运行时加载jar文件java.lang.NoClassDefFoundError:kotlin / jvm / internal / markers / KMappedMarker

尝试设置运行时间表时,类立即调用Method。没有发生功能

动态类加载时的运行时注释扫描

编译时和运行时java中类加载器的顺序

加载运行时编译源时格式错误的Java包类名

Java在尝试读取文本文件时遇到运行时错误

Java jar在运行时找不到类

尝试设置JVM标志时,Java运行时崩溃

尝试访问在VBA(Visio)中在运行时创建的控件的属性时发生运行时错误

在运行时动态加载jar?

在Java运行时加载Linux .so文件

Java在运行时生成类文件

尝试从jar文件运行时,Spring Boot应用程序将无法运行

尝试使用joda DateTimeFormatter解析日期时间时发生运行时异常

React Native:尝试在Android上运行时评估项目':app'时发生问题

在 Docker 上运行时尝试代理请求时发生错误

可运行的jar如何在运行时加载外部xml文件?

在运行时生成JAR文件

由于有人在不同的JAR中创建具有相同文件名的Java文件,因此在运行时防止ClassNotFoundException

在运行时加载JSON文件