如何从一个 jar 文件中运行另一个 jar 文件?

5
我将执行一个使用另一个jar包中的jar包的命令。
该命令将自动混淆Java jar文件,类似于以下代码:
public void obfuscate()
{
    try
    {
        String jre = "\"" + System.getProperty("java.home") + "\\bin\\javaw.exe" + "\"";
        String jar = " -jar";
        Runtime.getRuntime().exec(new String[] { jre, jar.trim(), "/lib/allatori.jar /lib/config.xml" });
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

allatori.jar文件作为资源包含在我的main.jar文件中。同时也包含了config.xml文件。

我该如何运行命令以执行这个包含的jar文件?

main.jar文件夹结构:

- main.jar
  |
  |- main_class.class
  |- lib/
      |- allatori.jar
      |- config.xml
      |- jarToObfuscate.jar
2个回答

1
当然。将其复制到外部,创建一个类加载器,找到您想要开始的类,然后就可以开始了。在原地进行操作?嗯,您必须编写自己的代码,从嵌入式jar文件中提取类文件并使它们可用于类加载器,可能需要从头开始编写。

"可能你需要从头开始编写它。例如,可以查看Fat Jar,其中“One-JAR”选项集成了一个专门的类加载器,用于处理嵌套在JAR文件中的JAR文件。还有JarClassLoader,它是一个类加载器,用于从顶层JAR和嵌套在顶层JAR中的JAR中加载类、本地库和资源。这些都是主要搜索引擎上的热门结果之一。" - Andrew Thompson
最简单的方法可能是通过编程创建一个 jar 程序的副本,然后使用 Runtime.exec 运行它,最后将其删除。你认为这个方法怎么样? - Manitoba

1
你在运行之前肯定要在jar外面解压它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接