2017-03-24 8 views
0

Ich erhalte eine inkompatible Typen Fehlermeldung in der folgenden Zeile in meiner Spring-Boot-Anwendung:inkompatible Typen: java.util.Optional <xyz.app.entity.Users> kann nicht in Benutzer konvertiert werden (Springboot-Kompilierungsfehler)

RequestDO request = requestRepository.findOne(requestModel.getRequestId()); 
Users employee = usersRepository.findOne(request.getUsers().getId()); 

Ich habe diesen Fehler in diesem Zusammenhang nicht zuvor erlebt. Meine App läuft seit ihrem ersten Produktions-Build vor etwa einem Monat erfolgreich.

Build-Ausfall:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project tmt: Compilation failure: Compilation failure: 
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/UserController.java:[45,45] incompatible types: java.util.Optional<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users 
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[139,54] incompatible types: java.util.Optional<xyz.app.entity.RequestDO> cannot be converted to xyz.app.entity.RequestDO 
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[140,49] incompatible types: java.util.app<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users 
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[155,54] incompatible types: java.util.Optional<v.app.entity.RequestDO> cannot be converted to xyz.app.entity.RequestDO 
[ERROR] /C:/Users/martin/Documents/Web Projects/home.office/src/main/java/xyz/app/controller/RequestController.java:[157,49] incompatible types: java.util.Optional<xyz.app.entity.Users> cannot be converted to xyz.app.entity.Users 

Ich habe keine Code-Änderungen gemacht, seit ich zuletzt erfolgreich habe mein Projekt wieder aufgebaut. Dies führt mich zu der Annahme, dass sich die Maven-Abhängigkeit in Springframe in letzter Zeit geändert hat, was dazu geführt hat, dass mein Code kaputt gegangen ist. Ist es möglich, dies zu testen, indem ich auf einen älteren Snapshot in meiner pom.xml zurückwechsle? Was könnte den Fehler verursachen?

pom

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>xyz.app</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>app</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>2.0.0.BUILD-SNAPSHOT</version> 
     <relativePath/> 
     <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-validation</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.microsoft.sqlserver</groupId> 
      <artifactId>sqljdbc4</artifactId> 
      <version>4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
     </dependency> 
     <!--<dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc7</artifactId> 
      <version>12.1.0.1</version> 
     </dependency>--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-ldap</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.directory.server</groupId> 
      <artifactId>apacheds-server-jndi</artifactId> 
      <version>1.5.5</version> 
     </dependency> 
     <dependency> 
      <groupId>it.ozimov</groupId> 
      <artifactId>spring-boot-email-core</artifactId> 
      <version>0.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>it.ozimov</groupId> 
      <artifactId>spring-boot-freemarker-email</artifactId> 
      <version>0.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.thymeleaf.extras</groupId> 
      <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-snapshots</id> 
      <name>Spring Snapshots</name> 
      <url>https://repo.spring.io/snapshot</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </pluginRepository> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>https://repo.spring.io/milestone</url> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 
+0

Welche Feder- und Federstiefel verwenden Sie? Verwenden Sie wirklich eine Snapshot-Version? Wenn dies der Fall ist, tun Sie dies nur, wenn Sie blutende Kanten testen möchten. Das Zurücksetzen auf einen älteren Snapshot funktioniert wahrscheinlich nicht. Natürlich können Sie zu einer älteren Version zurückkehren. – dunni

+0

'' org.springframework.boot Feder-boot-Starter-parent 2.0.0.BUILD-snapshot '' Worauf sollte ich die Version einstellen? – santafebound

+0

Sollte ich ein anderes Repository einschließen? Normalerweise ziehe ich das Schnappschuss-Repo. – santafebound

Antwort

1

Ich hatte ein ähnliches Problem 2.0.0.BUILD-snapshot verwenden, so, wenn Sie mit einigen Low-Level-Feder-Boot-Funktionen experimentieren, um die Version zu 1.5.2.RELEASE ändern

Verwandte Themen