【问题标题】:Installing IDEA on Ubuntu 11.10在 Ubuntu 11.10 上安装 IDEA
【发布时间】:2011-12-05 08:27:06
【问题描述】:

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

【问题讨论】:

  • @bbaja42:真的没有帮助。我还需要知道我应该将这些变量设置为什么。
  • 嗯,错误信息非常冗长。你已经安装了openjdk。找到它的安装文件夹,并将这3个变量(IDEA_JDK,JDK_HOME或JAVA_HOME)中的任何一个设置为openjdk安装文件夹。
  • @bbaja42:在我看来,这真的不像那样简单。还有一个原因,我把“Noob here”放在我原来的问题中。
  • @bbaja42:请参阅我在低飞鹈鹕答案下方的评论。

标签: ubuntu intellij-idea java ubuntu-11.10


【解决方案1】:

更新

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


原始答案(已过时):

建议使用 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)。

Here is the correct URL 用于 JDK 下载(版本 1.6.0_29)。从这个 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.

【讨论】:

  • 我部分同意您的说法,因为在基于 Windows 的 Host 上使用专有 Java 进行开发作为示例是完全合理的。然后分享给一个 Ubuntu 来宾,以便在需要时使用“开放”Java 进行开发......(如果你不使用 VirtualBox,请忽略它)。
  • 我并没有真正得到关于 OpenJDK 上的 Idea 的所有歇斯底里的警告。我使用 OpenJDK,并且必须注意,我在 OpenJDK 上运行 Idea 时亲自看到的所有错误都可以在 Sun JDK 上完全重现 - 我看不出有什么区别。性能也没有明显下降(至少对于我从事的项目而言)。
  • 不再分发在 .deb 文件上?写一次到处跑怎么办?
  • 8u25 似乎是当前版本,但我无法在任何地方找到二进制文件
  • 这个关于 OpenJDK 没有被明确支持的建议是最新的吗? The help article I came from 似乎暗示它现在在 Linux 下得到了某种程度的支持。
【解决方案2】:

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

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

重启后,尝试运行以下命令:

$ echo $JAVA_HOME

【讨论】:

  • 请注意,PATH 是完全不相关的,并且 no 需要重新启动 -- 只需启动一个新的 shell。在系统范围的/etc/bash.bashrc 中设置JAVA_HOME 环境变量也有点笨拙——也许系统上的另一个用户可能想要使用不同的JRE。
  • 我和你一样伤心。 echo $JAVA_HOME 现在可以使用。但是尝试运行 idea.sh 仍然失败并出现同样的错误。
  • 指向 JAVA_HOME 的路径是否正确? (你在哪里安装了openjdk?)
  • @missingfaktor 。调试:你能给出 ls "$JAVA_HOME" 的输出吗?另外,编辑idea.sh并在第一行添加-x,这将在控制台上打印输出每个操作的结果。也向我们展示该输出。
  • @Low Flying Pelican 不建议根据 Ubuntu 帮助页面编辑 bash.bashrc。建议用户编辑 /etc/environment 文件。如果他们想在不重新启动的情况下更新 shell/终端,那么他们可以使用 source 命令:$ source /etc/environment
【解决方案3】:

这个问题我遇到过好几次了……

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

然后从终端运行它:

$ idea projects-name;

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

【讨论】:

    【解决方案4】:

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

    在 46 行后添加

    【讨论】:

      【解决方案5】:

      如果你已经安装了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
      【解决方案6】:

      其实你可以在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
        

      【讨论】:

        【解决方案7】:

        您使用以下方式安装 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 运行良好。

        【讨论】:

          【解决方案8】:

          这是一个 bash 脚本,供安装 IDEA 的开发人员使用,以便您可以通过 idea.sh 从 shell 运行它

          还有:

          • 测试操作系统是否在 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

          【讨论】:

            【解决方案9】:

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

            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

            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 &

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

            【讨论】:

              【解决方案10】:

              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 "$@"
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多