如何创建动态jar文件以从入口点(main)访问多个类及其方法,而无需在java中导入?

如何创建动态jar文件以从入口点(main)访问多个类及其方法,而无需在java中导入?,java,Java,我想在不导入包的情况下从入口点(main)访问一个或多个类。例如: package com.ank.dynamicJarFileCreation; public class revDemo { public static int reverseNumber(int n) { int rem,rev=0; while(n>0) { rem=n%10; rev=rev*

我想在不导入包的情况下从入口点(main)访问一个或多个类。例如:

package com.ank.dynamicJarFileCreation;

public class revDemo {
    public static int reverseNumber(int n)
     {
         int rem,rev=0;
         while(n>0)
         {
             rem=n%10;
             rev=rev*10 + rem;
             n=n/10;
         }
         return rev;
     }
}
上面一个是
revDemo
类,我想从下面的入口点访问上面的
reverseNumber(int n)
方法。例如:

public class revCall {

public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {

    int n=485154;

    System.out.println(revDemo.reverseNumber(n));
或者通过这种方式

 Class cls = Class.forName("reverseDemo");
        Object obj =  cls.newInstance();

        System.out.print("Class Name"+cls.getName());
        Object obj =  null; //It is a object of -> com.ank.dynamicJarFileCreationo

        System.out.println(((com.ank.dynamicJarFileCreation)obj).reverseNumber(n));

    }

}

你很接近你自己的解决方案。实际上,您使用class.forName()和newInstance()函数动态创建了所需类的实例

下一步是通过方法名(比如ReverseEnumber)从类中获取函数,并使用创建的revDemo实例执行相同的函数

Class revDemoClazz = Class.forName("com.ank.dynamicJarFileCreation.revDemo");
Object revDemoObj = revDemoClazz.newInstance();
Method reverseNumberMethod = revDemoClazz.getMethod("reverseNumber", Integer.class);
reverseNumberMethod.invoke(revDemoObj, 12345);

你想要某种类型的吗?@JeroenHeier我如何用Java编译Hadoop hbase LZO压缩解压缩程序?请解释一下。我如何在windows上用Java编译Hadoop hbase LZO压缩解压缩程序?我做了相应的编译,但在线程“main”Java.lang.NoSuchMethodException:com.ank.dynamicJarFileCreation.ReverseEnumber(Java.lang.Integer)的Java.lang.Class.getMethod(未知源代码)的reverseCallerFun.main中得到异常(revCall.java:16)正如我所看到的,您的实际方法签名类似于公共静态int reverseEnumber(int n);因此,要找到该方法,您需要将get方法作为revDemoClazz.getMethod(“reverseEnumber”,int.class)查看我们将Integer.class和其他int.class作为参数传递给方法getMethod()的不同之处是的,我按照您的方式更正它,现在没有任何异常,但它仍然没有执行相反的操作。另外,请告诉我是否有任何方法可以调用非静态方法。在函数方法的第一个参数处。invoke()传递目标对象的对象,并且将调用目标对象的非静态方法。