如何在 Grails 4.0.3 中导入专有库

Posted

技术标签:

【中文标题】如何在 Grails 4.0.3 中导入专有库【英文标题】:How to import a proprietary library in Grails 4.0.3 【发布时间】:2021-12-30 08:26:01 【问题描述】:

我正在尝试在我的 grails 4.0.3 项目中导入专有 jar 库 (ICOMConector.jar),但它向我发送了一个错误。

在 IntelliJ 中,我右键单击项目文件夹并访问打开模块设置。然后我点击图书馆并选择我的罐子。之后,单击 Module / Dependencies 并在编译范围中选择该 jar。

在 build.gradle 文件中我放了这个 flatDir,因为我项目中的 jar 是标准结构:

repositories 
        maven  url "https://repo.grails.org/grails/core" 

        flatDir 
            dirs 'lib'
        
    

这在同一个 build.gradle 中,我已经尝试了所有这些,包括现在评论的那些, 但错误仍然存​​在。

dependencies 
    //implementation name: 'lib/ICOMConector.jar'
    //runtime files('lib/ICOMConector.jar')
    //runtime fileTree(dir: 'lib', include: '*.jar')
    compile fileTree(dir: 'lib', include: ['*.jar'])

当我在命令行中发送 grails run-app 时,错误是:

| Running application...
startup failed:
/media/alfredo/1TBHDD/CMB/Code projects/Grails 4/detran-mspid/grails-app/init/detran/mspid/BootStrap.groovy: 5: unable to resolve class com.workers.icom.ICOMConector
 **@ line 5, column 1.
   import com.workers.icom.ICOMConector
   ^

1 error**


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileGroovy'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

我尝试在 Bootstrap.groovy 中实例化该类,以便更轻松地验证它是否按预期工作。

谁能帮我导入这个库。我的一个朋友在一个 Spring boot 项目中做了这个并且它成功了,所以问题似乎是 Grails 中的错误配置。

package detran.mspid


import com.workers.icom.ICOMConector


class BootStrap 

    def init =  servletContext ->
        ICOMConector icom = new ICOMConector()

    
    def destroy = 
    

【问题讨论】:

这可能是一个愚蠢的问题...但是该类是否拼写错误为 ICOMConector 或者您是否正在导入该类的拼写错误版本? 我无法重现您所描述的行为。 @Trebla,感谢您的评论。 ICOMConector 只有一个 n,因为它是葡萄牙语。 【参考方案1】:

这就是我在我的build.gradle 中使用 grails 4.0.3 中的库的内容(不过至少从 grails 3 开始就是这种方式)。这与您使用runtime 范围尝试的几乎相同。

compile files("lib/opencsv-2.3.jar")
runtimeOnly fileTree(dir: './lib', include: ['*.jar'])

完全有可能其中一个或两个都是不必要的......

【讨论】:

编译fileTree(dir: 'lib', include: ['*.jar'])

以上是关于如何在 Grails 4.0.3 中导入专有库的主要内容,如果未能解决你的问题,请参考以下文章

如何在列表函数中导入 Javascript 库

如何在使用库的eclipse中导入android studio项目?

如何在vs中导入静态链接库(lib)?

如何解决在两个同级文件夹中导入相同库的错误?

如何从库中导入组件(在 nrwl/nx 中使用 Angular)

如何使用 Java Native Interface 在 C++ 中导入 python 库 - Android Studio