代码之家  ›  专栏  ›  技术社区  ›  vda8888

JDK 9不安全导入sun。其他。发射器

  •  6
  • vda8888  · 技术社区  · 7 年前

    我最近升级到JDK 9,Eclipse抱怨说 sun.misc.Launcher 无法导入。看来 太阳其他。发射器 不安全。 我正在寻找替代方案,以取代我的项目中的这一行代码。

    final URL url = Launcher.class.getResource("/");
    

    任何帮助都将不胜感激。

    更新:以上代码块的更完整版本为:

    final URL url = Launcher.class.getResource("/");
    final File fs = new File(url.toURI());
    for (File f : fs.listFiles()) {
         System.out.println(f.getAbsolutePath());
    }
    

    这是为了打印 src 程序在IDE中启动时的文件夹。

    2 回复  |  直到 7 年前
        1
  •  3
  •   shazin    7 年前

    Class.getResource 方法可以在任何 Class

    final URL url = ClassInTheCurrentModule.class.getResource("/");
    

    更新

    根据成员的反馈进行编辑

        2
  •  3
  •   Naman    7 年前

    调用 Class.getResource 从模块中尝试访问其类的任何类开始,应该可以正常工作。

    final URL url = ClassInTheCurrentModule.class.getResource("/");
    

    为什么 answer by shazin 可能会回来 null 可能是因为 ClassLoader 成为 getResource 呼叫:

    退货 无效的 当资源是包中的非“.class”资源时 这对调用方的模块不开放。

    自从 类装载器 属于包 java.lang 在模块中 java.base 您的模块可能无法打开。

    此外,请注意 获取资源 对命名模块和未命名模块进行进一步拆分。