当前位置:  开发笔记 > 编程语言 > 正文

如何使用在所有平台上运行的SWT创建可执行JAR?

如何解决《如何使用在所有平台上运行的SWT创建可执行JAR?》经验,为你挑选了2个好方法。

SWT附带一个基础JAR和每个平台一个特定的JAR(Windows,Linux/32位,Linux/64位,Mac,AIX,...).如何创建可在运行时选择正确平台JAR的可执行JAR?

[编辑]我想在一个子目录中提供所有平台JAR,main()然后修改类加载器.有没有人试过这个?



1> karoberts..:

对于我目前的工作,我需要提供一个可执行jar,可以在其自身内加载jar并执行第二个main().基本上是bootstrap main()和应用程序main().

步骤1.在清单"main-class"中放入引导类

第2步.当你的bootstrap类运行时,unjar是自己的jar,里面的所有jar都是temp目录.使用类似下面的行来获得自己的jar.

Main.class.getProtectionDomain().getCodeSource().getLocation().toURI()

步骤3.您的引导类通过"os.name"属性检测操作系统,并使用此属性从临时目录加载相应的jar

private static void loadJarIntoClassloader( URL u ) throws Exception
{
    URLClassLoader sysLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();

    Class sysclass = URLClassLoader.class;
    Method method = sysclass.getDeclaredMethod("addURL", URL.class);
    method.setAccessible(true);
    method.invoke(sysLoader, new Object[]{u});
}

步骤4.现在,您应该可以通过调用应用程序main()来运行应用程序.

注意:这个小小的hack取决于你的JVM使用URLClassLoader它的SystemClassLoader,这对于Sun JVM是正确的,而在其他方面则不然.

这样你就可以只交付一个罐子了,它会解压缩并运行正确的罐子.



2> Matías..:

看看这个,有一个代码示例: 创建跨平台的java swt应用程序

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有