微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在MacOS Big Sur上安装Netbeans 8.2找不到JDK

如何解决在MacOS Big Sur上安装Netbeans 8.2找不到JDK

我最近已升级到MacOS Big Sur,尝试打开NetBeans 8.2时出现错误

缺少JDK,并且它是运行某些NetBeans模块所必需的。请使用--JDK home命令行选项指定JDK安装

我尝试将JAVA_HOME设置为JDK路径,但是它不起作用。因此,我卸载了Netbeans和JDK,然后重新下载了Netbeans 8.2和JDK 8。

现在,当尝试设置Netbeans时,它显示

无法安装NetBeans IDE。您的计算机上找到了Java(JRE),但需要JDK 8或更高版本。请从http://www.oracle.com/technetwork/java/javase/downloads/index.html下载并安装JDK 8的最新更新,然后重新启动NetBeans安装。

Java -version

java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09,mixed mode)

Javac -version

javac 1.8.0_271

我当前的 $ JAVA_HOME 设置为/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home

我还尝试使用JDK 14和15安装NetBeans 11和12,但是它给出了相同的错误

编辑: 以下是唯一对我有用的解决方案。

/Applications/NetBeans/Apache\ NetBeans\ 12.1.app/Contents/Resources/NetBeans/netbeans/bin/netbeans --jdkhome /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
  1. 将上述命令粘贴到终端上。它打开NetBeans。要使用NetBeans而不再次输入命令,请将上面的命令保存在代码编辑器中,并另存为NetBeans.command文件

  2. 然后打开文件。在提示的消息上单击确定。在终端上键入以下命令。

    sudo passwd root

  3. 输入您的登录密码。

  4. 只需按 Enter (您无需输入新密码)

  5. 再次输入su root和您的登录密码。

  6. 键入chmod +x <path of the file you saved with .command>退出终端并打开保存的文件。现在应该可以使用了。

解决方法

当我可以安装 Netbeans 时,我遇到了同样的问题。这对我有用:

在终端中运行此命令行:

brew 安装 netbeans

,

这对我有用: 从全新安装启动Java。

sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/Java/JavaVirtualMachines
sudo rm -rf /Library/Application\ Support/Oracle/Java/
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane

重新启动计算机。

下载并安装Java jdk-8u271-macosx-x64 重新启动计算机。

从Appache Netbeans下载并安装NetBeans 12.1(对不起,尽管我最初尝试了Netbeans 8.2,但对我来说不再起作用了。)

打开Netbeans,接受导入Netbeans 8.2首选项。 转到“ Netbeans”菜单下的“ Netbeans首选项”窗格。 单击Java图标,然后单击Java Shell ...等待Netbeans响应。接受任何对话框(我忘记了,但出现了一些对话框)。 Netbeans将抱怨找不到jdk。退出Netbeans。 使用bbedit或类似工具打开文件/Applications/NetBeans/NetBeans 12.1.app/Contents/Resources/NetBeans/etc/netbeans.conf。 查找并编辑以下行:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home"

保存文件。 打开Netbeans;转到“ Netbeans”菜单下的“ Netbeans首选项”窗格。 单击Java图标,然后单击Java Shell。它可能会留在空白方块中。 关闭“首选项”窗格;转到“工具”菜单:您将看到“ Java平台”菜单。 在那里,所有Java分期付款。

Hepoe很有帮助。

,

我有同样的问题。 我不需要重新启动计算机。 我只是改变了这一行:

procedure TSomeObject.FixCookies(Sender: TObject; AHeaders: TIdHeaderList;
  var VContinue: Boolean);
const
  CookieDelimiter = ';';
  QuoteChar = '"';
  SpaceChar = ' ';
var
  RawHeader,RawCookie,RawCookieValue,RawCookieName: string;
  i,CookieDelimiterPos,CookieNamePos,CookieValuePos,CookieIndex: Integer;
begin
  for i := 0 to AHeaders.Count - 1 do
  begin
    RawHeader := AHeaders[i];
    if Pos('Set-Cookie',RawHeader) = 1 then  // starts with "Set-Cookie"
    begin
      for CookieNamePos := Length('Set-Cookie') + 2 to Length(RawHeader) do
        if RawHeader[CookieNamePos] <> SpaceChar then
          Break;

      RawCookie := Copy(RawHeader,Length(RawHeader) - CookieNamePos + 1);
      CookieDelimiterPos := Pos(CookieDelimiter,RawCookie);
      CookieValuePos := Pos('=',RawCookie);

      if (CookieDelimiterPos > 0) and (CookieValuePos > 0) then
      begin
        RawCookieName := Copy(RawCookie,1,CookieValuePos - 1);
        RawCookieValue := Copy(RawCookie,CookieValuePos + 1,CookieDelimiterPos - CookieValuePos - 1);
        if (Length(RawCookieValue) > 0) and (RawCookieValue[1] = QuoteChar) and
          (RawCookieValue[Length(RawCookieValue)] = QuoteChar) then
          RawCookieValue := Copy(RawCookieValue,2,Length(RawCookieValue) - 2);

        with (Sender as TIdHTTP) do
        begin
          CookieIndex := CookieManager.CookieCollection.GetCookieIndex
            (RawCookieName);
          if CookieIndex >= 0 then
            CookieManager.CookieCollection[CookieIndex].Value := RawCookieValue
        end;
      end;
    end;
  end;

  VContinue := True;
end;

文件netbeans.conf中的目录:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home"

这对我有用

,

这只是netbeans jdk主页路径的问题,不用担心尝试-

第1步-打开终端

/usr/libexec/java_home

输出-/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

复制此路径,因为您必须将其保存在netbeans.conf中

第2步-在终端中使用此

nano /Applications/NetBeans/NetBeans\ 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf

搜索netbeansjdkhome并粘贴您在STEP 1中复制的路径

最后它应该看起来像这样-

netbeansjdkhome="/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home"

第3步-重新启动并打开Netbeans 8.2,现在可以正常使用了。

,

实际上很简单!但这真的很难弄清楚!

我将一步一步告诉它:

第1步:首先,必须确保像这样设置JAVA_HOME(取决于您安装的版本:

export JAVA_HOME=$(/usr/libexec/java_home -v "1.8.0_275")

如果只是不确定安装了哪个jdk版本,请执行以下操作:

/usr/libexec/java_home -V

步骤2:好的,现在您必须从apache网站下载要安装的任何netbeans版本。我需要11.1。

第3步:打开dmg文件并将pkg文件复制到您的主目录(您可以使用finder或任何您想使用的东西)。

步骤4:在主目录上执行以下命令(请确保使用正确的信息替换youruser和yourpkgfilename.pkg):

/usr/bin/sudo -E -- /usr/bin/env LOGNAME=youruser USER=youruser USERNAME=youruser /usr/sbin/installer -pkg yourpkgfilename.pkg -target /

您应该获得以下输出:

installer: Package name is Apache NetBeans IDE 11.1
installer: Installing at base path /
installer: The install was successful.

PS:瞧,我已经立即签署了此协议,只是为了确保在这里解决所有遇到的问题,如果能真正帮助到您,我真的很感激被选为正确的解决方案?

> ,

问题似乎在于 BigSur 中的 /usr/libexec/java_home 似乎已损坏(请参阅此处:https://developer.apple.com/forums/thread/666681)。

Netbeans 安装程序使用 /usr/libexec/java_home 检查 JDK 是否安装,得到错误答案并退出并显示错误。

修复该行为的一种方法是修补安装程序。可以按如下方式进行:

假设 tmp 中没有名为“a”的目录:

  1. 打开 dmg,但不要运行安装程序

  2. 在 shell 中输入以下命令:

pkgutil --expand /Volumes/NetBeans\ 8.2\ RC/NetBeans\ 8.2\ RC.pkg /tmp/a

(如果您的 Netbeans 安装程序具有不同的名称,请更改命令以反映安装程序的实际名称)

这会打开包,并将其内容复制到 /tmp/a 中。

  1. 编辑安装脚本。使用文本编辑器打开文件 /tmp/a/Distribution。

  2. 在第 13 行,替换:

var java_result = checkJavaVersion();

var java_result = true;

并保存文件。这将跳过对 Java 版本的检查。 您有责任确保您的机器上有 JDK 8 或后续版本,并且在您使用 java 命令时使用此版本。您可以通过检查命令来确保没问题

java -version

  1. 让我们总结一下:

pkgutil --flatten /tmp/a ~/a.pkg

此时您的主目录中有一个名为 a.pkg 的包。双击它,Netbeans 安装程序就会完成它的工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?