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

我正在linux下运行IntelliJ Idea。 我在里面创build了一个项目和一个模块,在这个模块中我有一个类(MyClass.class),当我试图从IDE运行它时,

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

有人可以解释我为什么IntelliJ Idea不能识别模块中的类吗? 我知道这应该是一个关于模块设置的问题,但我无法弄清楚。 我使用的是Ubuntu 11.10

好吧,我把这里的path和所有的东西都看到:)

键入 :echo $ PATH
结果: / 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中

键入: echo $ JAVA_HOME 结果:
/ usr / lib中/ JVM / JAVA -7-的openjdk-I386

键入: ./idea.sh 结果:注意:如果您同时安装了Sun JDK和OpenJDK,请validationIDEA_JDK或JDK_HOME环境variables是否指向有效的Sun JDK安装

Solutions Collecting From Web of "Linux下的IntelliJ Idea,主类上没有这样的文件或目录"

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

也许你在各种替代项目中混合了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 …

所以我已经:

  1. 如上所述更新替代配置,
  2. /usr/lib/jvm/default-java符号链接改为指向java-7-openjdk-amd64
  3. JDK_HOME检查所有环境变量(我的JAVA_HOMEJDK_HOME都指向/usr/lib/jvm/default-java ),
  4. 重新配置我的项目的SDK(以及项目中的所有模块),

瞧 – 问题解决了!

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

将此行添加到.bashrc

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

运行的想法。 利润。 🙂

我遇到了同样的问题。 我发现底层系统的Java版本并不重要,所以不需要设置JAVA_HOMEupdate_alternatives 。 我所要做的只是改变IDEA中的一些设置:

  • 添加一个Java SDK(OpenJDK 7或Oracle JDK 6或7( File -> Project structure -> SDKs
  • 选择它作为项目SDK( File -> Project structure -> Project

检查Make复选框是否启用,否则IDEA不会编译您的项目,也请验证输出目录中是否存在类文件,并且您正在使用正确模块的类路径运行。

如果问题仍然存在,请发送一个示例项目来支持。

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

感谢雅罗斯拉夫,他的(几乎)解决方案确实有所帮助 – 我不能解释为什么,也许它也会与sun-jdk-6一起工作…所以,我安装了openjdk-7,而不删除openjdk-6,并设置第7作为Idea的一个项目的JDK。 (我没有改变任何环境变量。)用jdk7编译。

PS我应该写它作为评论雅罗斯拉夫的帖子,不是一个单独的答案,但我还没有足够的声誉做这个…

尝试使用IDEA运行

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

当它开始时按下Ctrl+Alt+Shift+S打开项目设置对话框。 在左侧面板中选择Project,并确认Project SDK配置正确(至少不是红色)。