在IntelliJ中找不到类文件

时间:2010-02-04 12:46:06

标签: java jpa intellij-idea

在IntelliJ中,当我尝试编译时,我得到了这个奇怪的错误。

Cannot find annotation method 'cascade()' in type 'javax.persistence.ManyToOne': class file for javax.persistence.ManyToOne not found

我知道,问题似乎很明显,但是在这个问题上花了太多时间,我现在把信任交给你了!

我使用ideaCommunity-9,我在其中为JBoss创建了一个全局库,其中包含所有JBoss jar,包括ejb3-persistence.jar。我的模块包含这个库,我已将其移至依赖项的顶部。 在classpath中没有其他地方我有一个javax.persistence.ManyToOne类,它也可以在IntelliJ中打开而没有问题。
如果我打开文件,我收到编译错误,IntelliJ显示没有问题,并按Ctrl + B导航到类文件。
代码也是用ant构建的,这里工作正常。

除了上面的错误,我在同一条路径上得到了另外六个(表中的名字等) - 都与JPA有关。我还收到一条消息说“请向JDC yada yada yada提交一个错误。”

8 个答案:

答案 0 :(得分:32)

尝试勾选依赖项中的“导出”复选框。

我的意思是:“文件”菜单 - >项目结构 - >模块 - >依赖关系,你可以看到模块中包含的库。您还应该在“导出”列中的每个库附近看到一个复选框。

答案 1 :(得分:9)

我自己就是这样,但不是那些事情是我的问题。我从github下载了一个项目,然后在尝试运行junit测试后在intel J中打开了问题。

解决方案:项目结构 - >模块 - > 'Project_Name' - >来源(标签) - >点击src文件夹 - >标记为:来源

这应该突出显示src为蓝色,所有类文件应该是带有C的圆圈,而不是看起来像普通文件。尝试再次运行测试,看看是否可以。

答案 2 :(得分:2)

我敢肯定,现在回答为时已晚,但我不得不采用不同的方法来解决此问题。

我必须将其创建为全局库并将该库添加到模块中,然后才解决错误。

Add this as a global library

Then add that library as dependency to the project

答案 3 :(得分:1)

与此SO question不相似吗?

解决方案是添加所有JBoss jar(你做过),还有所有持久相关的库(比如Hibernate)

请参阅此JBoss project configuration,例如:

alt text http://jdick.co.uk/blog/wp-content/uploads/2008/12/projectstructure1.jpg

简而言之,ejb3-persistence.jar可能不是问题所在,只是其他元素缺失的症状。
或者,如果是问题,则可能与未正确部署的事实有关(对于WebApp configuration)。

答案 4 :(得分:0)

这是一个想法: 也许你的jar文件有多个版本。 在文件夹层次结构中搜索文件ejb3-persistence.jar, 使用Total Commander等文件管理工具。 类路径中文件的多次出现可能会混淆IntelliJ Idea 在适当的罐子里没有认识到适当的课程。

答案 5 :(得分:0)

有一个类似的问题(“找不到类弹簧... DefaultResourceLoader,即使它在我的maven依赖项中”并且重新验证缓存的调整量似乎没什么帮助。吹掉我的$ HOME /.Idea *路径和(基本上)从头开始为我修复它。至少现在......

答案 6 :(得分:0)

我在尝试执行class not found测试类时收到.groovy错误消息,该测试类引用了.groovy文件(位于子模块的源目录的根目录中 - 即没有包裹。)

将源文件.groovy移到包中,为我解决了这个问题。

移动:

src/main/groovy/RunMe.groovy

src/main/groovy/somePackage/RunMe.groovy

答案 7 :(得分:0)

在intelliJ中,当我在文件级别构建(ctrl + shift + F9)时遇到了这个问题。

原因是,我对同一个maven项目中的其他文件进行了更改,但没有被选中。

我通过在项目级别构建解决了它(在intellij中选择Maven项目并按ctrl + shift + F9)