Import 为什么IntelliJ IDEA可以解析类,而Groovy/Griffon不能?

Import 为什么IntelliJ IDEA可以解析类,而Groovy/Griffon不能?,import,intellij-idea,classpath,griffon,dcm4che,Import,Intellij Idea,Classpath,Griffon,Dcm4che,我正在使用IntelliJ开发Griffon应用程序,并尝试使用dcm4che项目库。我已经设法让IntelliJ的代码编辑器停止抱怨缺少类,但当我去运行Griffon应用程序时,编译器陷入了困境,抱怨它无法解析类DicomInputStream,等等 我没有做任何花哨的事。我所做的只是尝试包含一些简单的jar文件,但无论出于什么原因,事情都无法正常工作 我承认,我不太擅长处理类路径问题,我只使用IntelliJ一段时间,使用Griffon/Groovy的时间更少,但我完全被难倒了 以下是失败的

我正在使用IntelliJ开发Griffon应用程序,并尝试使用dcm4che项目库。我已经设法让IntelliJ的代码编辑器停止抱怨缺少类,但当我去运行Griffon应用程序时,编译器陷入了困境,抱怨它
无法解析类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库,我执行了以下操作:

  • 下载(bin压缩包)并将压缩包解压缩到
    MyApp\MyAppClient\lib\dcm4che-2.0.25-bin
  • 在“项目结构”对话框的“模块->MyAppClient”下的“依赖项”选项卡下,我单击“添加”并选择文件夹:
    MyAppClient\lib\dcm4che-2.0.25-bin\dcm4che-2.0.25\lib
  • 此时,代码编辑器不再抱怨无法找到和解析类,但当我运行或调试应用程序时,会出现编译错误。没有导入这些类(以及使用它们的代码),一切都很好


    我能做些什么来解决这个问题?还有什么其他信息有助于了解发生了什么?

    正如Peter所建议的,您可以使用dependency DSL(如果可以从maven或ivy repo获得)将库配置为依赖项,或者将其放在MyApp/lib中(无其他子目录)。这些都是Griffon设定的惯例。

    您是如何确切地说出依赖项的位置的?传统的方法是要么将它们放入lib目录,要么使用特殊的DSL通过Maven id指向它们。@PeterGromov,我添加了关于如何添加库的描述。基于控制台输出,无论是否有这些导入,Java调用都不会改变(比如,将目录添加到类路径中)。请尝试将jar直接放在MyAppClient\lib下。@PeterGromov,将所有jar文件放在
    lib
    目录中都有效,但如果我将它们放在其中的任何目录中,像
    lib/dcm4che/
    ,IDE可以找到它们,没有问题,但Griffon不能。有什么办法可以解决这个问题吗?我真的很讨厌把我所有的jar文件都放在一个没有组织的大目录中,特别是当多个项目需要相同的东西时。对不起,Griffon就是这样工作的。您可以尝试通过DSL()管理依赖项,但请注意IDEA目前不支持该(),您必须手动管理模块依赖项。如果Griffon能够更轻松地处理
    MyApp/lib
    目录中的更多组织,那将是非常棒的。这就是为什么我们首先使用依赖项DSL的原因。然而,在Griffon goes 1.0之后,我们可能支持$app/lib中的嵌套依赖项。