[JavaFx]如何使用Java7直接运行JavaFx程序?

莫言墨语 2016-05-11 09:06:13
我刚学习JavaFx,发现Java7无法直接运行JavaFx程序。经过一番调查,发现:

1.Java8可以直接运行JavaFx程序,但由于项目要求只能用Java7
2.Java7u6之后的版本支持JavaFx,但所有支持Javafx的Java7版本都不能直接运行JavaFx程序。
3.jfxrt.jar包是JavaFx的支持库。
4.Java7的jfxrt.jar在jre7/lib/jfxrt.jar
5.Java8的jfxrt.jar在jre7/lib/ext/jfxrt.jar
6.很明显Java7无法运行JavaFx的原因是jfxrt.jar没有被加载。

我的JavaFx程序只有300kb,而一个jfxrt.jar库就有14M,我不可能让程序拖着库跑。
(最重要的是这个库在jre里有的)

所以请教各位前辈,大神。如何解决这个问题?
感激不尽!
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mixley 2018-12-19
  • 打赏
  • 举报
回复
找到解决办法了吗,目前我只能通过打包jfxrt到jar或者使用java -Xbootclasspath/a:"%java_home%\jre\lib\jfxrt.jar" -jar fxlauncher-1.0.21-R1.7.jar 执行。
mixley 2018-12-19
  • 打赏
  • 举报
回复
找到解决办法如下,在运行javafx之前,获取java路径,然后使用类加载器加载jfxrt,然后启动javafx程序。这个main方法不能有任何fx引用,否则报错。

import fxlauncher.Launcher;

import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

/**
 * @Author: 李志锐
 * @Date: 2018-12-19 17:44
 */
public class Application {
    static {
        String version = System.getProperty("java.specification.version");
        System.out.println(version);
        if ("1.7".equals(version)){
            try {
                String jrePath = System.getProperty("java.home");
                String jfxrt = jrePath + "/lib/jfxrt.jar";
                // 包路径定义
                File file = new File(jfxrt);
                if (file.exists()){
                    URL urls = file.toURL();
                    URLClassLoader urlLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
                    Class<URLClassLoader> sysclass = URLClassLoader.class;
                    Method method = sysclass.getDeclaredMethod("addURL", new Class[]{URL.class});
                    method.setAccessible(true);
                    method.invoke(urlLoader, urls);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        Launcher.main(args);
    }
}
  • 打赏
  • 举报
回复
失败的东西,, 请回过头来使用swing,咱们十年后一起html5

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧