【发布时间】:2011-12-07 18:43:18
【问题描述】:
我正在使用 IntelliJ 开发 Griffon 应用程序,并且我正在尝试使用 dcm4che 项目库。我已经设法让 IntelliJ 的代码编辑器停止抱怨缺少类,但是当我运行 Griffon 应用程序时,编译器着火了,抱怨它是 unable to resolve class DicomInputStream,等等。
我没有做任何花哨的事情。我所做的只是尝试包含一些简单的 jar 文件,但无论出于何种原因,事情都无法正常工作。
我承认,我在处理类路径问题方面并不是特别精通,而且我使用 IntelliJ 的时间也只有一小段时间,而使用 Griffon / Groovy 的时间更短,但我完全被难住了。
这是失败的导入语句集:
import org.dcm4che2.io.DicomInputStream
import org.dcm4che2.data.DicomObject
import org.dcm4che2.data.DicomElement
这是我在尝试运行或调试应用程序时在 IntelliJ 控制台中收到的一组错误消息:
Base Directory: C:\Users\[REDACTED]\MyApp\MyAppClient
Resolving dependencies...
Dependencies resolved in 698ms.
Running script C:\Program Files (x86)\Griffon\Griffon-0.9.4\scripts\RunApp.groovy
Environment set to development
[griffonc] Compiling 32 source files to C:\Users\[REDACTED]\.griffon\0.9.4\projects\MyApp\classes
[griffonc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 9: unable to resolve class org.dcm4che2.data.DicomElement
[griffonc] @ line 9, column 1.
[griffonc] import org.dcm4che2.data.DicomElement
[griffonc] ^
[griffonc]
[griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 7: unable to resolve class org.dcm4che2.io.DicomInputStream
[griffonc] @ line 7, column 1.
[griffonc] import org.dcm4che2.io.DicomInputStream
[griffonc] ^
[griffonc]
[griffonc] C:\Users\[REDACTED]\MyApp\MyAppClient\griffon-app\controllers\myappclient\SelectRootController.groovy: 8: unable to resolve class org.dcm4che2.data.DicomObject
[griffonc] @ line 8, column 1.
[griffonc] import org.dcm4che2.data.DicomObject
[griffonc] ^
[griffonc]
[griffonc] 3 errors
Compilation error: Compilation Failed
要安装 dcm4che 库,我执行了以下操作:
- 下载library binaries(-bin zip)并解压到
MyApp\MyAppClient\lib\dcm4che-2.0.25-bin - 在“项目结构”对话框的“模块”->“MyAppClient”下的“依赖项”选项卡下,单击“添加”并选择文件夹:
MyAppClient\lib\dcm4che-2.0.25-bin\dcm4che-2.0.25\lib
此时,代码编辑器不再抱怨无法找到和解析类,但是当我运行或调试应用程序时,我得到了编译错误。在不导入这些类(以及使用它们的代码)的情况下,一切都正常。
我能做些什么来解决这个问题?还有哪些其他信息有助于弄清楚发生了什么?
【问题讨论】:
-
您到底是如何告诉 IDEA 您的依赖项在哪里的? AFAIK 的正统方法是将它们放入 lib 目录,或者使用特殊的 DSL 通过 Maven id 指向它们。
-
@PeterGromov,我添加了关于如何添加库的描述。基于有和没有这些导入的控制台输出,Java 调用根本没有改变(例如,将目录添加到类路径)
-
请尝试将jar直接放在MyAppClient\lib下。
-
@PeterGromov,将所有 jar 文件放在
lib目录中是可行的,但是如果我将它们放在其中的任何目录中,例如lib/dcm4che/,IDE 可以找到它们,没问题,但是格里芬不能。有什么办法可以解决这个问题吗?我真的很不想将我的 所有 jar 文件放在一个没有组织的大目录中,尤其是当多个项目需要相同的东西时。 -
这就是 Griffon 的工作方式,抱歉。您可以尝试通过 DSL (griffon.codehaus.org/guide/0.9.4/guide/…) 管理依赖项,但请注意 IDEA 目前不支持 (youtrack.jetbrains.net/issue/IDEABKL-6134),您必须手动管理模块依赖项。
标签: import intellij-idea classpath griffon dcm4che