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

标签 java class grails web reference

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

  • 添加java构建路径。
  • 检查项目引用。

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

当我将 TestsimiiraDetection.java 作为 java 应用程序运行时,这并不重要。但是当我将 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构建路径中添加了类文件夹,但它仍然产生错误。 谁能帮我吗?

最佳答案

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

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

替代解决方案

还考虑将 Java 依赖项作为 Maven 工件提供。基本上,如果您将 Java 代码放入 Maven 项目中,您只需添加来自本地 Maven 存储库的依赖项即可。文档中对此进行了广泛描述 - http://grails.github.io/grails-doc/2.3.x/guide/conf.html#dependencyResolution值得一试。

关于java - 为什么当 grails 项目作为 grails-app 运行时,我的 java 项目中的包无法编译,java 项目引用了 grails 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28292720/

相关文章:

java - 所下的订单包含不存在的产品

java - 在 Maven 模块中拆分类的良好做法

javascript - 谷歌地图API出现问题,获取位置地址

grails - 在Grails中使用查询最安全,最可维护的做法是什么?

java - 如何将Java API文档添加到Intellij IDEA中以供离线使用

Java定义多维数组

Java 回文程序(我走上正轨了吗)?

不继承属性的Python子类

grails - 无法删除GORM中的用户

hibernate - Grails 标准的复杂预测