为什么我的 java 项目中的包在 grails 项目 运行 作为 grails-app 时无法编译,其中 java 项目被引用到 grails 项目

why package in my java project does not compile when grails project run as grails-app,there java project is referenced to grails project

这些是关于我的两个项目的图片: java 项目包括:许多包 xyz。 grails 项目,我通过两种方式引用 java 项目:

所以我在 grails 项目中有文件 TestsimiliraDetection.java。它调用 java 项目中的所有包。

当我运行TestsimiliraDetection.java为java-application时,无所谓。但是当我 运行 ThirdGrails 项目作为 grails 应用程序时,它会产生以下错误:

Compiling 3 source files  [groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
  [groovyc] Compile error during compilation with javac.
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:7: error: package local.extractText.extractText does not exist
  [groovyc] import local.extractText.extractText.ExtractPdf;
  [groovyc]                                     ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:8: error: package local.extractText.extractText does not exist
  [groovyc] import local.extractText.extractText.GetSection;
  [groovyc]                                     ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:9: error: package local.extractText.extractText does not exist
  [groovyc] import local.extractText.extractText.GetStructureOfFile;
  [groovyc]                                     ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:10: error: package local.extractText.getPositionPdf does not exist
  [groovyc] import local.extractText.getPositionPdf.Page;
  [groovyc]                                        ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:11: error: package local.extractText.getPositionPdf does not exist
  [groovyc] import local.extractText.getPositionPdf.Paragraph;
  [groovyc]                                        ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:12: error: package local.extractText.getPositionPdf does not exist
  [groovyc] import local.extractText.getPositionPdf.Part;
  [groovyc]                                        ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:13: error: package local.extractText.getPositionPdf does not exist
  [groovyc] import local.extractText.getPositionPdf.Section;
  [groovyc]                                        ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:14: error: package local.infoFile does not exist
  [groovyc] import local.infoFile.infoThesis;
  [groovyc]                      ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:15: error: package local.libs does not exist
  [groovyc] import local.libs.Lib;
  [groovyc]                  ^
  [groovyc] A:\juno-workspace\ThirdGrails\src\java\readInput\TestSimitaryDetection.java:16: error: package local.lucene does not exist
  [groovyc] import local.lucene.FindCopy;
.......

这里找不到包 xyz .xyz 是我的 java 项目中的包。 但它不起作用。有没有办法参考这些项目?为什么这些包不能编译?我还在 grails 项目的 java 构建路径中添加了 class 文件夹,但它仍然会产生错误。 谁能帮帮我?

如果您想将 Java 代码直接添加到 Grails 项目中,您需要遵循标准的 classpath 规则。在 Grails 中,您有这个 src/java 文件夹,它是您要放入项目中的任何 Java 代码的根 class 路径。然后,如果您像 local.lucene.FindCopy 一样导入 class,则文件 src/java/local/lucene/FindCopy.java 必须存在。

请记住,像 run-app 这样的 Grails 命令并不关心您在 Eclipse 项目构建路径中设置的内容。它仅指示您的 IDE 的行为,而不指示 Grails 本身。但是如果你使用例如GGTS(Groovy Grails 工具套件),src/java 中的构建路径应该默认为任何 Java 项目定义。

备选方案

考虑同时提供您的 Java 依赖项作为 Maven 工件。基本上,如果您将 Java 代码放入 Maven 项目,您可以简单地添加来自本地 Maven 存储库的依赖项。它在文档中有广泛描述 - http://grails.github.io/grails-doc/2.3.x/guide/conf.html#dependencyResolution 值得一试。