首页 文章

Linux下的IntelliJ Idea,主类上没有这样的文件或目录

提问于
浏览
10

我在linux下运行IntelliJ Idea . 我在其中创建了一个项目和一个模块,在该模块中我有一个类(MyClass.class),当我尝试从IDE运行它时,我得到了

错误:MyClass.class(没有这样的文件或目录)

有人可以解释为什么IntelliJ Idea无法识别我的模块中的类吗?我知道它应该是关于模块设置的问题,但我无法弄明白 . 我正在使用Ubuntu 11.10

好的,我把这里的路径和所有内容都放在这里:)

type :echo $ PATH
Result: / usr / lib / lightdm / lightdm:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin:/ usr / games:/ usr / lib / JVM / JAVA -7-的openjdk-I386 / bin中:/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / bin中:/ usr / lib中/ JVM / JAVA -7-的openjdk-I386 / bin中

type: echo $ JAVA_HOME Result:
/ usr / lib中/ JVM / JAVA -7-的openjdk-I386

type: ./idea.sh Result: 注意:如果同时安装了Sun JDK和OpenJDK,请将IDEA_JDK或JDK_HOME环境变量点验证为有效的Sun JDK安装

6 回答

  • 0

    Arkde,我有一个可能的解释,为什么Jaroslav的JDK7解决方案不适合你 .

    也许你在各种 alternatives 项目中混合使用Java版本,可能与 JAVA_HOMEJDK_HOME 等环境变量指向的版本冲突?

    也许有些东西指向 /usr/lib/jvm/default-java 符号链接作为JDK主页,并且该符号链接指向不同版本的JDK而不是预期的?

    您是否尝试将所有Java工具的替代品重置为版本7?像这样:

    update-java-alternatives --list
    # ...see what JDK's are available, choose the one that corresponds to Java 7
    # and set it to be the default in alternatives:
    sudo update-java-alternatives --set java-1.7.0-openjdk-amd64
    # or interactively:
    sudo update-alternatives --config java
    

    以下命令在您的系统上输出什么?

    echo $JAVA_HOME
    echo $JDK_HOME
    ls -l /usr/lib/jvm/default-java
    update-java-alternatives --list
    update-alternatives --list java
    

    我有完全相同的问题 . 我已经在Idea过程中执行过strace,在日志中我看到它试图打开几个没有指定路径的.class文件 - 比如 open("SomeClass.class", O_RDONLY) = -1 ENOENT (No such file or directory) - 没有项目输出目录和相应包的路径 .

    所以我在JDK 6上安装了JDK 7:

    apt-get install openjdk-7-doc openjdk-7-jdk openjdk-7-jre openjdk-7-jre-headless openjdk-7-jre-lib openjdk-7-source
    

    在Ubuntu 11.10 Oneiric中,如果你想要OpenJDK 7,OpenJDK 6是不可移动的.JDK 7依赖于JDK 6 ......

    所以我:

    • 更新了上面指定的替代配置,

    • /usr/lib/jvm/default-java 符号链接更改为指向 java-7-openjdk-amd64

    • double检查了所有环境变量(我的 JAVA_HOMEJDK_HOME 都指向 /usr/lib/jvm/default-java ),

    • 适当地重新配置了项目的SDK(以及项目中的所有模块),

    瞧 - 问题解决了!

  • 0

    解决了它 . 删除所有jdk / jre,安装openjdk7 .

    将此行添加到.bashrc

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386/
    export PATH=$PATH:$JAVA_HOME/bin
    

    运行想法 . 利润 . :)

  • 7

    我遇到了同样的问题 . 我发现底层系统范围的Java版本无关紧要,因此无需设置 JAVA_HOMEupdate_alternatives . 我所要做的只是更改IDEA中的一些设置:

    • 添加Java SDK,OpenJDK 7或Oracle JDK 6或7( File -> Project structure -> SDKs

    • 选择它作为Project SDK( File -> Project structure -> Project

  • 2

    检查是否已启用 Make 复选框,否则IDEA将无法编译您的项目,还会验证输出目录中是否有类文件,并且您正在使用正确模块的类路径运行 .

    如果问题仍然存在,请发送示例项目以获得支持 .

  • 5

    我遇到了同样的问题 - 我将我的项目(和Idea设置)从带有Ubuntu 10.04和sun-jdk-6的笔记本电脑移动到带有Ubunty 11.10和openjdk-6的PC上 . 在项目重建时,我得到了所有类的 MyClass.class (No Such file or directory) 错误 .

    感谢Jaroslav,他的(差不多)解决方案确实有所帮助 - 我无法解释为什么,也许它也适用于sun-jdk-6 ......所以,我安装了openjdk-7,没有删除openjdk-6,并设置了第7个作为一个项目的JDK在Idea中 . (我没有在环境变量中做任何改变 . )用jdk7编译 .

    PS我应该把它写成对Jaroslav的帖子的评论,而不是单独的答案,但我还没有足够的声誉做到这一点......

  • 0

    尝试使用IDEA

    sh -c "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386 && ./idea.sh"

    开始时按 Ctrl+Alt+Shift+S 打开“项目设置”对话框 . 在左侧面板中选择 Project 并验证是否正确配置了 Project SDK (至少它不是红色) .

相关问题