45

我正在尝试在 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这三个变量会在屏幕上打印一个空行。如何(以及设置哪些值)设置这些变量并继续安装?谢谢。

4

10 回答 10

81

更新

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


原始答案(已过时):

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

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

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

他们的网站也令人困惑,您可以轻松下载 JRE 而不是 JDK(这将无法正常工作,因为 IntelliJ IDEA 需要 JRE 包中缺少的 tools.jar)。

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

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>. 现在 IntelliJ IDEA 在 Oracle JDK 1.6.0_29 下应该可以正常启动了。Help您可以在|中验证它 About.

于 2011-12-05T10:46:02.277 回答
3

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

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

重新启动时,尝试运行以下命令:

$ echo $JAVA_HOME
于 2011-12-05T08:36:51.957 回答
3

我遇到过几次这个问题...

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

然后从终端运行它:

$ idea projects-name;

或 2:导航到 IDEA_HOME/bin 并从那里运行它。

于 2011-12-06T09:03:35.160 回答
3

我也面临一个问题......在第一天所有工作都没有问题,但是......我解决了一个问题:添加到idea.sh带有JDK路径的文件行IDEA_JDK="/opt/java/32/jdk1.6.0_45/"

在 46 行后添加

于 2013-07-13T21:06:08.797 回答
2

如果您已经安装了 java,请尝试:

type java

如果你看到这样的:

java is /usr/java/default/java

那么你应该编辑.bash_profile,添加:

export JAVA_HOME=/usr/java/default

然后执行:

source .bash_profile

如果你没有安装java,你应该安装手动或自动。

于 2011-12-05T08:52:05.913 回答
1

实际上,您可以在 bash 中配置 JAVA_HOME。但是,IDEA 使用标准 bin 文件夹中的 javac 和 java。所以,你必须像这样配置。

  • 将 JDK 下载到 home(~) 文件夹
  • 解压压缩文件
  • 使用这些命令 mv 到 /usr/lib/jvm 下的 jvm 文件夹

    sudo mv -r ~/jdk-xx-version /usr/lib/jvm
    
  • 使用这些命令来配置 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
    
于 2016-03-19T13:31:59.320 回答
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 运行良好。

于 2016-11-23T09:57:27.370 回答
0

这是安装 IDEA 的开发人员的 bash 脚本,以便您可以从 shell 运行它idea.sh

它也是:

  • 测试操作系统是否在 VirtualBox 上运行
  • 如果它在 VirtualBox 上运行,则测试 IdeaProjects 是否设置为共享
  • 如果是,则向引导脚本写入挂载命令以将项目从主机自动挂载到来宾
  • 还创建一个脚本来即时挂载和卸载创意项目

#!/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
于 2011-12-09T15:12:55.270 回答
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.22019.3,这导致最新版本的 IDEA 暂时没有配置文件。
  • 这意味着不会有“有效的 Java 运行时”。

解决方案

  1. 查看您以前的配置并查找您正在使用的运行时:

% cat ~/.IntelliJIdea2019.2/config/idea.jdk /home/username/.IntelliJIdea2019.2/config/jdks/jbrsdk-8u232-linux-x64-b1638.3

  1. 在我上面的例子中,jbrsdk-8u232-linux-x64-b1638.3路径如上所示。暂时将其导出为 JAVA_HOME.

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

  1. 运行idea &

您现在应该会显示第一次运行对话框来复制配置,并且您不需要再次导出变量。

于 2019-11-29T23:19:33.900 回答
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 "$@"
于 2020-07-20T09:53:02.770 回答