我最近已升级到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
将上述命令粘贴到终端上。它打开NetBeans。要使用NetBeans而不再次输入命令,请将上面的命令保存在代码编辑器中,并另存为NetBeans.command
文件。
然后打开文件。在提示的消息上单击确定。在终端上键入以下命令。
sudo passwd root
输入您的登录密码。
只需按 Enter (您无需输入新密码)
再次输入su root
和您的登录密码。
键入chmod +x <path of the file you saved with .command>
。退出终端并打开保存的文件。现在应该可以使用了。
答案 0 :(得分:4)
当我可以安装 Netbeans 时,我遇到了同样的问题。这对我有用:
在终端中运行此命令行:
<块引用>brew 安装 netbeans
答案 1 :(得分:0)
这对我有用: 从全新安装启动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很有帮助。
答案 2 :(得分:0)
我有同样的问题。 我不需要重新启动计算机。 我只是改变了这一行:
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, CookieNamePos,
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"
这对我有用
答案 3 :(得分:0)
这只是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,现在可以正常使用了。
答案 4 :(得分:0)
实际上很简单!但这真的很难弄清楚!
我将一步一步告诉它:
第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:瞧,我已经立即签署了此协议,只是为了确保在这里解决所有遇到的问题,如果能真正帮助到您,我真的很感激被选为正确的解决方案?
>答案 5 :(得分:0)
问题似乎在于 BigSur 中的 /usr/libexec/java_home 似乎已损坏(请参阅此处:https://developer.apple.com/forums/thread/666681)。
Netbeans 安装程序使用 /usr/libexec/java_home 检查 JDK 是否安装,得到错误答案并退出并显示错误。
修复该行为的一种方法是修补安装程序。可以按如下方式进行:
假设 tmp 中没有名为“a”的目录:
打开 dmg,但不要运行安装程序
在 shell 中输入以下命令:
pkgutil --expand /Volumes/NetBeans\ 8.2\ RC/NetBeans\ 8.2\ RC.pkg /tmp/a
(如果您的 Netbeans 安装程序具有不同的名称,请更改命令以反映安装程序的实际名称)
这会打开包,并将其内容复制到 /tmp/a 中。
编辑安装脚本。使用文本编辑器打开文件 /tmp/a/Distribution。
在第 13 行,替换:
var java_result = checkJavaVersion();
与
var java_result = true;
并保存文件。这将跳过对 Java 版本的检查。 您有责任确保您的机器上有 JDK 8 或后续版本,并且在您使用 java 命令时使用此版本。您可以通过检查命令来确保没问题
java -version
pkgutil --flatten /tmp/a ~/a.pkg
此时您的主目录中有一个名为 a.pkg 的包。双击它,Netbeans 安装程序就会完成它的工作。