这些是关于我的两个项目的图片: 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/