Gradle:通过Gradle任务bootJar创建的jar文件无法运行

3
我正在创建一个Spring Boot应用程序,具有以下属性。当我使用Gradle bootrun运行项目时,它可以成功运行,但是当我创建一个jar并部署它时,它就无法工作了。以下是我的build.gradle文件。
我已经检查过所有项目版本都相同。
Error :Error mapping to ad-hoc class .. At present, only @Result types that are discovered by the domain entity package scanning can be mapped.;
nested exception is org.neo4j.ogm.exception.core.MappingException: Error mapping to ad-hoc class com.vipul....  At present, only @Result types that are discovered by the domain entity package scanning can be mapped

PS:我知道关于查询结果映射,但它可以在bootRun中工作,但不能在bootJar中工作。

buildscript {
  ext {
    springBootVersion = '2.0.5.RELEASE'
    swaggerVersion = '2.5.0'
    jacksonVersion = '2.9.2'
    projectVersion = "0.0.1"
    version = "0.0.1"
  }
  repositories {
    mavenCentral()
    jcenter()
    maven {
        url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
  }
}

apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: "io.spring.dependency-management"
apply plugin: 'idea'
apply plugin: 'application'
version = "$projectVersion-SNAPSHOT"
sourceCompatibility = 1.8
mainClassName = 'com.vipul.Application'
applicationDefaultJvmArgs = ["-Xdiag"]
repositories {
  mavenCentral()
  jcenter()
  maven { url "https://plugins.gradle.org/m2/" }
  maven{ url "https://repo.spring.io/plugins-release"}
}
task wrapper(type: Wrapper) { gradleVersion = '4.4' }

ext {
    springCloudVersion = 'Finchley.RELEASE'
}

dependencies {
  compile('org.springframework.boot:spring-boot-starter-aop')
  compile('org.springframework.boot:spring-boot-starter-cache')
  compile('org.springframework.boot:spring-boot-starter-data-neo4j')
}

dependencyManagement {
  imports {
    mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
  }
}

你能提供一个例子吗?除了误导性的错误信息(@Result)之外,它还说要加载和映射的类型对Neo4j-OGM来说是未知的。这很令人困惑,因为你说它在Spring Boot运行模式下可以工作。 - meistermeier
这很简单,我正在使用一个API,并将数据绑定到一个带有注释QueryResult的文件中。 - Vipul Pandey
在创建一个 jar 文件的过程中,有没有可能它可以获取其他依赖项? - Vipul Pandey
@meistermeier,根据我的理解,他提到当使用bootRun任务运行应用程序时,上述错误不会出现。实体扫描器能够扫描并获取(@Result)类型。但是当他创建jar文件并执行它时,就会出现上述问题。 - 89n3ur0n
我大致了解问题,但只是想了解一下这个项目的概念。也许了解“创建一个jar并部署它”的含义仍然有所帮助。@vipul。你不能在servlet容器/应用服务器上“部署”一个jar。 - meistermeier
1个回答

2
尝试在您的build.gradle文件中更改springBoot和springCloud版本。
springBootVersion='2.0.0.RELEASE'

似乎是与Spring Boot版本有关的问题。springBootVersion = '2.0.5.RELEASE'。

1
谢谢@user3736548,我尝试了相同的方法,结果如预期。 - Vipul Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接