当前位置: 首页 > 面试题库 >

如何从jar将域类导入Micronaut项目?

罗鸿畴
2023-03-14
问题内容

我有一个配置为使用GORM和Groovy(1)的Micronaut项目。该项目包含许多运行良好的域类,按预期将数据持久存储在MySQL数据库中。

现在,我希望使该域类对另一个Micronaut项目(2)通用。

我尝试构建仅包含域包并将其包含在项目(2)中的JAR文件build.gradle。这些类编译和代码所做的访问,并且我能够调用GORM方法,如findBycreateCriteria等也很不错一提的是所有的项目2的领域类与注释@Entity

但是,当我运行项目(使用IntelliJ想法)并点击其中一些代码时,我得到:

Either class [com.project2.domain.Foo] is not a 
domain class or GORM has not been initialized correctly or has already 
been shutdown. Ensure GORM is loaded and configured correctly before 
calling any methods on a GORM entity.

我知道GORM的配置和初始化正确,因为我在项目2中创建了一个“本地”域类,并且一切正常。

编辑1:当前build.gradle依赖项:

dependencies {
    compile "io.micronaut.configuration:micronaut-kafka"
    compile "io.micronaut.configuration:micronaut-hibernate-validator"

    compile("io.micronaut.configuration:micronaut-hibernate-gorm") {
        exclude group: 'org.grails', module: 'grails-datastore-gorm-hibernate5'
    }
    compile "org.grails:grails-datastore-gorm-hibernate5:6.1.9.RELEASE"

    compile "io.micronaut:micronaut-http-client"
    compile "io.micronaut:micronaut-http-server-netty"
    compile "io.micronaut:micronaut-runtime-groovy"
    compile "io.micronaut:micronaut-validation"
    compileOnly "io.micronaut:micronaut-inject-groovy"
    runtime "ch.qos.logback:logback-classic:1.2.3"

    runtime "org.apache.tomcat:tomcat-jdbc"

    runtime "mysql:mysql-connector-java:6.0.6"

    testCompile "io.micronaut:micronaut-inject-groovy"

    testCompile("org.spockframework:spock-core") {
        exclude group: "org.codehaus.groovy", module: "groovy-all"
    }

    compile files('src/main/resources/libs/my-domain-lib.jar')
}

提前致谢!


问题答案:

我正在使用类似的设置。

我有一个带有GORM独立版本的核心库,以及几个通过gradle compile project()compile dep:from- artifactory:0.1-SNAPSHOT指令使用的(Vert.x)顶点和Grails应用程序。

为了使其成为可能,我需要:

1)确保每个域类都带有注释 grails.gorm.annotation.Entity

2)Application.groovy像这样调整Grails :

class Application extends GrailsAutoConfiguration {

  @Override
  protected boolean limitScanningToApplication() {
    false
  }

  @Override
  Collection<String> packageNames() {
    super.packageNames() + 'your.domainclass.package'
  }

}

3)对于no-Grails项目,我需要自己查找和初始化域类,并且对于每个DB来说,它可能是不同的(mine是的Mongo-GORM

ClassPathScanningCandidateComponentProvider compProvider = new ClassPathScanningCandidateComponentProvider( false )
compProvider.addIncludeFilter new AnnotationTypeFilter( Entity )
def domainClasses = compProvider.findCandidateComponents( 'io.my.domain' ).collect{ BeanDefinition bd -> Class.forName bd.beanClassName }
new MongoDatastore( config, *domainClasses )


 类似资料:
  • 我很难从我创建的jar文件中导入类和方法。IntelliJ中的java文件。这是一种打印到控制台的简单方法,包含以下内容。 每当我试图用 我得到了无法解决符号'Gazutils' 我在创造新的世界。jar文件并将其导入项目结构,如下所示: 项目结构 然后 建立 然后我将. jar文件复制到我想在和 右键点击罐子 这将它添加为依赖项,但我似乎仍然无法访问或导入类或方法

  • 我有一个项目。对项目进行更改后,我将项目打包成一个Uber Jar文件,并将其上传到备份中。我在想,如果我的电脑坏了,或者我把所有的代码都丢给了这个项目,我能只用Uber Jar文件把项目拿回来吗?还是这个项目会永远消失? 如何将这个Jar文件作为一个项目打开,并查看其中的所有Java代码?

  • 我正在使用IntelliJ 2016,我成功添加了一些Maven依赖项(用于ImageJ插件开发),这两个外部库以jar文件的形式显示。我已经在项目结构中添加了它们- 其中一个正在成功导入,而另一个没有。有效的在jar的子文件夹中 导入fiji.threshold.Auto_Local_Threshold 另一个就在罐子下面,当我尝试时,名字无法识别: 导入MultipleKymograph_ 我

  • 我有一个Java项目,它被其他各种Java和Android项目大量使用。该项目包含一些JAR库,除Android项目外,所有项目都应使用这些JAR库(确切地说,Android项目是一个Android库项目)。 我在Java项目的Eclipse构建路径首选项中将JAR标记为“导出”。然而,Android项目不应该导入这些库(因为它们Java使用Android上不可用的一些类的库),但它应该导入其余的

  • 我今天花了几个小时在谷歌上搜索大多数解决方案都过时了。我在项目所遵从的窗口上使用eclipse,但我无法使它成为一个独立的应用程序,如果没有: 有哪些方法可以将JavaFX11项目导出到可执行jar中,而无需在导出后将其链接到JavaFX-SDK-11.0.2? 谢了。

  • 我正在开发一款需要服务器的android游戏。我们设置了一个git,其中有三个文件夹:客户端、服务器和共享: 客户端包含Android Studio项目。服务器包含一个Eclipse项目,它是我们的服务器和数据库。Shared包含我想在Eclipse和Android Studio项目中使用的java类。 在Eclipse中,我通过将文件导入为“文件系统”,成功地从共享中加载了文件。(它创建了一个包