在Ubuntu 11.10上安装IDEA

47

我正在尝试在Ubuntu 11.10上安装IDEA。首先,我安装了openjdk-7-jdk。然后我按照说明尝试运行idea.sh文件。但是它报错:

ERROR: cannot start IntelliJ IDEA.
No JDK found to run IDEA. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME 
environment variable points to valid JDK installation.

Press Enter to continue.

尝试使用echo打印这三个变量会将一个空行输出到屏幕上。我该如何设置这些变量的值并继续安装呢?谢谢。


http://askubuntu.com/questions/4667/where-to-declare-environment-variables - bbaja42
2
@bbaja42:这并没有真正帮助。我还需要知道我应该设置这些变量为什么值。 - missingfaktor
错误信息相当冗长。您已经安装了openjdk。找到它的安装文件夹,并将这3个变量(IDEA_JDK、JDK_HOME或JAVA_HOME)之一设置为openjdk安装文件夹。 - bbaja42
@bbaja42:对我来说,这似乎并不那么简单。此外,我在我的原始问题中加上“新手”,是有原因的。 - missingfaktor
@bbaja42:请看我在Low Flying Pelican的回答下面的评论。 - missingfaktor
10个回答

85

更新:

建议在Linux上使用捆绑的JetBrains Runtime运行IntelliJ IDEA。目前,IntelliJ IDEA需要Java 8才能在此平台上运行。可以切换到系统或其他Java版本,请查看常见问题解答


原始答案(已过时):

建议在Linux上使用OpenJDK 1.7+或Oracle JDK来运行IntelliJ IDEA,由于已知的性能和视觉问题,严格不支持OpenJDK 1.6。

从IntelliJ IDEA 16开始,自定义JRE与Linux发行版捆绑。

棘手的部分是,Oracle JDK不再通过.deb包分发,您不能只使用apt-get或Ubuntu软件中心安装它。

他们的网站也很混乱,您可能会轻松下载JRE而不是JDK(这将无法正常工作,因为IntelliJ IDEA需要缺少tools.jar的JRE包)。

这是正确的URL用于JDK下载(版本1.6.0_29)。从此URL下载适当的.bin文件,例如如果需要32位Java,则为jdk-6u29-linux-i586.bin,如果需要64位版本,则为jdk-6u29-linux-x64.bin

chmod +x jdk-6u29-linux-i586.bin
./jdk-6u29-linux-i586.bin

安装在当前目录中。

bin/idea.sh文件的第二行添加以下内容:

export IDEA_JDK=/path/to/jdk1.6.0_29

通常位于/usr/lib/jvm/<YOUR_JDK>下。现在,在Oracle JDK 1.6.0_29下,IntelliJ IDEA应该可以正常启动。您可以在帮助|关于中进行验证。


12
我不太明白有关OpenJDK的Idea的所有狂热警告。我使用OpenJDK并注意到所有我个人在运行OpenJDK上的Idea时看到的错误,在Sun JDK上完全可以重现 - 我看不出任何区别。对于我正在处理的项目,也没有明显的性能降级。 - Petr Gladkikh
2
不再分发.deb文件了吗?“编写一次,到处运行”的理念发生了什么变化? - Jens
3
8u25 似乎是目前的版本,但我无法在任何地方找到二进制文件。 - Pierre de LESPINAY
这篇关于OpenJDK不被明确支持的建议有多新?我来自的帮助文章似乎暗示它现在在Linux下以某种方式得到了支持。 - Makoto
很遗憾,我的JAVA_HOME似乎总是优先于IDEA_JDK - 它总是抱怨Java 7(它指向JAVA_HOME,在命令行上使用Maven编译遗留项目)。我需要为IntelliJ和我的系统的其余部分使用不同的虚拟机。 - Gregor
显示剩余2条评论

3

我也遇到了一个问题……第一天所有的工作都没有问题,但是之后……

我解决了一个问题:在文件idea.sh中添加一行路径到JDK的代码IDEA_JDK="/opt/java/32/jdk1.6.0_45/"

在第46行之后添加。


3

您可以通过以下步骤设置JAVA_HOME变量并将其添加到您的PATH中。 以root身份打开/etc/bash.bashrc,并将以下内容添加到文件末尾。

JAVA_HOME=/usr/lib/jvm/java
export JAVA_HOME

当您重新启动后,请尝试运行以下操作:
$ echo $JAVA_HOME

1
请注意,PATH与此完全无关,_无需_重新启动计算机--只需启动新的shell即可。在系统范围内的/etc/bash.bashrc中设置JAVA_HOME环境变量也有点粗糙--也许系统上的另一个用户想要使用不同的JRE。 - sarnold
我按照你说的做了。现在 echo $JAVA_HOME 可以工作了。然而,尝试运行 idea.sh 仍然失败并显示相同的错误。 - missingfaktor
JAVA_HOME指向的路径是否正确?(即您安装OpenJDK的路径) - Low Flying Pelican
@missingfaktor。用于调试:您能否提供ls“$JAVA_HOME”的输出?另外,编辑idea.sh并在第一行添加-x,这将在控制台上打印每个操作的结果。请向我们展示该输出。 - bbaja42
1
@Low Flying Pelican,根据Ubuntu帮助页面的建议,不建议编辑bash.bashrc文件。建议用户编辑/etc/environment文件。如果他们想要在无需重启的情况下更新shell/终端,则可以使用source命令:$ source /etc/environment。 - thejartender
显示剩余4条评论

3

我曾多次遇到这个问题...

  1. 将 IDEA_HOME/bin 添加到您的 PATH 中 确保 JAVA_HOME 和其他变量设置正确。

然后从终端运行:

$ idea projects-name;

或者2:进入IDEA_HOME/bin目录并从那里运行。


2

如果您已经安装了Java,请尝试以下操作:

type java

如果你看到像这样的内容:
java is /usr/java/default/java

如果您需要编辑.bash_profile,请添加以下内容:

export JAVA_HOME=/usr/java/default

然后执行:
source .bash_profile

如果您没有安装Java,您可以手动或自动安装。

@missingfaktor 这是一个标准的Unix文件,应该在你的家目录下,并且文件名必须以 . 开头。个人建议如果你有root权限的话可以将其添加到 /etc/profile.d 中。 - Peter Lawrey

1
实际上,您可以在bash中配置JAVA_HOME。但是,IDEA使用标准bin文件夹中的javac和java。因此,您必须进行以下配置。
  • Download the JDK to home(~) folder
  • extract the zip file
  • use these command to mv to jvm folder under /usr/lib/jvm

    sudo mv -r ~/jdk-xx-version /usr/lib/jvm
    
  • use these commands to configure the JAVA_HOME

    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk-xx-version/bin/java" 1 
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk-xx-version/bin/javac" 1 
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk-xx-version/bin/javaws" 1
    

1
您安装 JDK 8 的步骤如下:

sudo apt-get install openjdk-8-jdk

有时问题可能出在您正在运行的默认JAVA版本上。为此,请使用update-alternatives进行修改:

sudo update-alternatives --config java

看看我是怎么做的:
$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

现在,Intellij IDEA 2016.3 运行良好。


0

这是针对开发人员的 Bash 脚本,可安装 IDEA,以便您可以通过 idea.sh 在 shell 中运行它。

此外,它还:

  • 测试操作系统是否在 VirtualBox 上运行
  • 如果在 VirtualBox 上运行,则测试是否设置了 IdeaProjects 共享
  • 如果是,则将挂载命令写入引导脚本,以自动挂载来自主机到客户端的项目
  • 还创建一个脚本,以便可以实时挂载和卸载 idea 项目

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Modify these variables as needed...
tempWork=/tmp/work
defaultStartScript=/etc/init.d/rc.local
defaultIDEA=11.0.1
locBin=/usr/local/bin

read -p "Please [Enter] full path name of your local startup script ($defaultStartScript is the default). Please
make sure on this before providing a value by consulting documentation for your system:" locStartScript
locStartScript=${locStartScript:-$defaultStartScript}

read -p "Please [Enter] IDEA Version ($defaultIDEA is default):" ideaVersion
ideaVersion=${ideaVersion:-$defaultIDEA}


if [ ! -f $locStartScript ]
then
    echo "The file you provided could not be found. Remember to include the full path and try again. Exiting in 7 secs..."
    sleep 7
    exit 1
fi

mkdir -p /$tempWork
cd /$tempWork

sudo wget http://download-ln.jetbrains.com/idea/ideaIC-$ideaVersion.tar.gz;
tar -zxvf ./*;

#Move it to a better location...
mv ./idea-IC-* $HOME/;

sudo ln -f -s $HOME/idea-*/bin/* /usr/bin/;

#If you use VirtualBox , you can share your projects between Host and guest. Name of shared
#folder must match 'IdeaProjects'
mkdir -p $HOME/IdeaProjects

if [ -f /sbin/mount.vboxsf ]
then
    sudo /sbin/umount $HOME/IdeaProjects
    sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects
fi

if mountpoint -q ~/IdeaProjects
then
#Add it to the start script to automate process...
if ! grep "sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects" $locStartScript
then
    echo "sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects" | sudo tee -a $locStartScript
fi
    sudo chmod +x $locStartScript

#Create a mount and unmount script file...
    rm -rf $tempWork/*
    echo '#!/bin/bash' > $tempWork/idea-mount.sh
    echo "sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects" >> $tempWork/idea-mount.sh
    echo "echo 'mounted IdeaProjects'" >> $tempWork/idea-mount.sh
    echo "exit 0" >> $tempWork/idea-mount.sh

    echo '#!/bin/bash' > $tempWork/idea-umount.sh
    echo "sudo umount $HOME/IdeaProjects" >> $tempWork/idea-umount.sh
    echo "echo 'unmounted IdeaProjects'" >> $tempWork/idea-mount.sh
    echo 'exit 0' >> $tempWork/idea-umount.sh

#Script for mounting ALL VirtualBox shared solders....
#If there isn't one create one...
if [ ! -f $locBin/mount-all-from-host.sh ]
then
    echo '#!/bin/bash' > $tempWork/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects" | sudo tee -a $tempWork/mount-all-from-host.sh
    echo "exit 0" | sudo tee -a $tempWork/mount-all-from-host.sh

#Otherwise if there is one, but no mount, add one...
elif ! grep "sudo /sbin/mount.vboxsf IdeaProjects" $locBin/mount-all-from-host.sh
then
    sudo sed -ie '$d' $locBin/mount-all-from-host.sh
    echo "sudo /sbin/mount.vboxsf IdeaProjects $HOME/IdeaProjects" | sudo tee -a $locBin/mount-all-from-host.sh
    echo "exit 0" | sudo tee -a $locBin/mount-all-from-host.sh
fi

#Script for unmounting ALL VirtualBox shared folders...
#If there isn't one create one...
if [ ! -f $locBin/umount-all-from-host.sh ]
then
    echo '#!/bin/bash' > $tempWork/umount-all-from-host.sh
    echo "sudo umount -a -t vboxsf" | sudo tee -a $tempWork/umount-all-from-host.sh
    echo "echo 'unmounted all VirtualBox shared folders'" | sudo tee -a $tempWork/umount-all-from-host.sh
    echo "exit 0" | sudo tee -a $tempWork/umount-all-from-host.sh
fi

    sudo chmod +x $tempWork/*
    sudo mv -f $tempWork/*.sh $locBin/
    rm -rf $tempWork
fi

sudo rm -rf $tempWork

exit 0

0

Arch Linux针对IntelliJ IDEA 2020的解决方案在这里: https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/intellij-idea-community-edition

if [ -z "$IDEA_JDK" ] ; then
  IDEA_JDK="/usr/lib/jvm/java-11-openjdk/"
fi
# open-jfx location that should match the JDK version
if [ -z "$IDEA_JFX" ] ; then
  IDEA_JFX="/usr/lib/jvm/java-11-openjfx/"
fi
# classpath according to defined JDK/JFX
if [ -z "$IDEA_CLASSPATH" ] ; then
  IDEA_CLASSPATH="${IDEA_JDK}/lib/*:${IDEA_JFX}/lib/*"
fi

exec env IDEA_JDK="$IDEA_JDK" IDEA_CLASSPATH="$IDEA_CLASSPATH" /usr/share/idea/bin/idea.sh "$@"

0

这可能不是原始问题的根本原因,但在搜索此错误时它是最常见的结果:

ERROR: cannot start IntelliJ IDEA.
No JDK found to run IDEA. Please validate either IDEA_JDK, JDK_HOME or JAVA_HOME 
environment variable points to valid JDK installation.

简短回答:如果你在升级IDEA时遇到此错误并且正在使用JBRE(JetBrains Runtime),请将先前的运行时路径导出到JAVA_HOME,以加载最新版本的IDEA,并允许导入向导复制配置文件。
  • 在我的开发环境中,当没有安装默认的JAVA_HOME时会出现问题。
  • 我从2019.2版本升级到2019.3版本,这导致最新版本的IDEA暂时没有配置文件。
  • 这意味着没有“有效的Java运行时”。
解决方案:
  1. 查看以前的配置并查找你正在使用的运行时:
% cat ~/.IntelliJIdea2019.2/config/idea.jdk /home/username/.IntelliJIdea2019.2/config/jdks/jbrsdk-8u232-linux-x64-b1638.3 在我上面的例子中,它是jbrsdk-8u232-linux-x64-b1638.3,路径如上所示。将其临时导出为JAVA_HOME

EXPORT JAVA_HOME=/home/username/.IntelliJIdea2019.2/config/jdks/jbrsdk-8u232-linux-x64-b1638.3

  • 运行idea &
  • 现在应该会弹出第一次运行对话框,以复制配置,而您无需再次导出变量。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接