【问题标题】:Why can't BlueJ take into account my Java Home whereas Eclipse can为什么 BlueJ 不能考虑我的 Java Home 而 Eclipse 可以
【发布时间】:2015-11-24 06:38:20
【问题描述】:

出于便携性原因,我想手动安装 BlueJ。我已设置 Java_Home 并将 Java bin 目录添加到路径环境变量。我在 c:\java 上使用了一个符号链接,它指向 sd 卡上的 d:\java。

为什么 BlueJ 不考​​虑它们仍然假装它无法检测到 jdk。

更新:Eclipse 没问题,那么 BlueJ 和 Jdk 1.8 有什么特别之处吗?

【问题讨论】:

  • 你确定你有 JDK 而不仅仅是一个 JRE?
  • @zar 是的,它是 jdk 1.8 而不是 jre
  • 那你可能做错了什么。添加更多细节。
  • Eclipse 工作正常,所以我看不出有什么问题,除了我忽略的 BlueJ 特有的东西
  • @Max no 因为没有 bat 文件只适合我.exe

标签: java bluej


【解决方案1】:

我刚刚在单独的驱动器上完成了 BlueJ 和 JDK 1.8 的全新安装,以重现您的问题。我创建了一个指向 JDK 的符号链接,并将其放在 JAVA_HOMEPATH 中(根据您使用的 C:\ 语法,我猜您是在 Windows 上,所以我在 Windows 8.1 上进行了测试)。

我也发现BlueJ在选择运行时使用的JDK时忽略了环境变量的设置。我可以使用配套程序 Select BlueJ VM 更改 JDK,但无法在此处输入符号链接(我相信在早期版本中,更改 VM 是开始菜单上的设置,而不是单独的程序)。

总结:

  • BlueJ 和 Java 8 的兼容性不是问题
  • 不是符号链接的问题
  • 至少对于 Windows,这是由于 BlueJ 确定和存储它使用的 JDK 的方式(这两个操作都通过注册表)。
  • 如果需要,您可以手动将注册表项更改为符号链接(请参阅下面的详细信息),但这是一个额外的安装步骤。

详细说明

我发现 BlueJ 将它使用的 JDK 的路径存储在以下注册表项中

HKEY_CURRENT_USER\Software\BlueJ\BlueJ\3.1.5\CurrentVM

请注意,根目录可能是HKEY_USERSHKEY_LOCAL_MACHINE,具体取决于您是为机器的一个用户还是所有用户安装。

问题是,如果您的系统在运行时或在第一次运行 BlueJ 或使用 Select BlueJ VM 时只有一个可用的 VM,则此键会自动设置在以后的任何时间进行程序。那里提供给您的选项是启动器可以在那时(通过注册表)在您的系统上检测到的 JDK。一旦设置了该值,它就不会在运行时动态更改以反映JAVA_HOME。即使使用选项中的“浏览”选项,我也无法通过 GUI 将符号链接设置为 JDK 位置。

可以但是,手动将该注册表项的值(例如通过regedit)更改为您的符号链接值(测试和验证OK - 可能需要管理员权限)。


我查看了the source code 以确定CurrentVM 的设置方式。

经过相当短的搜索(感谢 BlueJ 开发人员的良好命名),我最终发现用于启动 BlueJ 的实际代码是 \package\winlaunch\bjlaunch.cc (source file mercurial link here) 中的 C++ 文件。

这只是检查注册表项的值,如果它不存在,则调用 findRegistryVMs(),它会检查注册表(NOT 环境变量) 获取可用的虚拟机并将其提供给用户。因此,似乎没有办法让 BlueJ 在不手动编辑注册表的情况下使用来自 JAVA_HOME 的值。


注意如果您手动将此键值更改为符号链接,您可以更改符号链接链接到的位置,并且(通过重新启动)BlueJ 将使用符号链接链接到的任何 JDK。再次在 Windows 8.1 上测试和验证

注意2 起初,事情看起来很乐观:在Installer.java 中有一个名为findJavaPath() 的方法首先检查

String javaHome = System.getProperty("java.home");

如果这不起作用,请先进行一些猜测。所以它看起来应该尊重JAVA_HOME 在安装时的值。 但是,它似乎只使用它来检查是否有可用的兼容 (1.6+) 版本的 Java。

【讨论】:

    猜你喜欢
    • 2018-05-14
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 2017-04-26
    相关资源
    最近更新 更多