如何在 jar 文件上远程执行方法



我有一个应用程序,其目的是在分布在文件系统中的许多不同的jar文件中调用同一类中的相同特定方法并接收结果。所以我可以保证某个类和方法将存在于 jar 文件中。

我知道每个jar文件的位置。对我来说,通过反射实例化类并以这种方式调用该方法非常容易。

我的问题是我有很多这样的jar文件。如果我使用上述方法调用每个 jar,我担心我的应用程序的内存消耗会急剧增加,因为我必须为每个调用加载整个 jar 文件。

除了反射之外,有什么方法可以调用这些jars文件吗?系统调用不起作用,因为我需要接收回一个值。

非常感谢...

您可能会遇到烫发空间的问题,但这可以通过-XX:MaxPermSize=增加参数。

确保为每个JAR文件使用单独的URLClassLoader,并且不要保留它们,以便它们可以获得GCd。通过新的 URLClassLoader 加载 JAR 文件,然后使用 Class.forName() 进行加载。

祝你好运!

我会做类似这样的伪代码:

foreach jf : myJarFiles
  jcl = new JarClassLoader(jf);
  Class.forName(myClassName);
  m = MyClass.getMethod(...);
  m.invoke(...);

相关内容

  • 没有找到相关文章

最新更新