2016-08-09 10 views
0

ich eine Feder Boot-Anwendung (1.4.0.RELEASE) mit folgenden KonfigurationValidation mit Frühlings-Boot und Steg

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 

Wie erwartet, ist dies lief mit eingebettetem Tomcat. Ich habe dann gedacht, das gleiche mit einem Jetty-Server versuchen, und folgte die in der Dokumentation hier genannten Schritte: Using Jetty instead of Tomcat

Grundsätzlich ohne Tomcat und das Hinzufügen von Abhängigkeit für Jetty.Running mvn sauber von der Kommandozeile installieren oder die Hauptmethode zur Folge laufen in der folgenden Ausnahme:

verursacht durch: javax.validation.ValidationException: HV000183: Kann nicht load 'javax.el.ExpressionFactory'. Überprüfen Sie, ob Sie die EL Abhängigkeiten auf dem Classpath haben, oder verwenden Sie ParameterMessageInterpolator statt

Ich könnte dieses Problem lösen, indem Sie die folgende Abhängigkeit in der pom.xml Zugabe:

<dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>javax.el-api</artifactId> 
     <version>3.0.0</version> 
</dependency> 

Ich bin nicht direkt mit Irgendein validierungsbezogener Code, aber ich vermute, dass dies von dem Springboot-Jpa-Starter gezogen wird, der Hibernate einzieht. Similar issue

Fragen:

1) Ist das der richtige fix Ich habe auch eine Diskussion um das hier zu sehen?

2) Wenn es die richtige Lösung ist, sollte die Dokumentation aktualisiert werden, um diese Abhängigkeit hinzuzufügen?

+0

Ich habe gerade eine leere 'Spring-Boot'-App mit Ihren 'pom.xml'-Konfigurationen ausgeführt und sie läuft wie erwartet. Hast du ein "mvn clean install" oder "mvn clean package" ausgeführt, als du Sachen in deiner 'pom.xml' verändert hast? Wenn Sie das getan haben und die selbe Ausnahme erzeugt, würde es sich meiner Ansicht nach lohnen, das ''-Tag gemäß der obigen Jetty-Dokumentation hinzuzufügen, ohne die' javax.el'-Abhängigkeit. Sollten Sie den gleichen Fehler erneut erhalten, ist es wahrscheinlich, dass Ihre Annahme richtig ist, um sie zur Dokumentation hinzuzufügen oder als Fehler zu verwenden. Aber für mich funktioniert es ohne die javax.el-Abhängigkeit. – Arty

+0

Die obige pom.xml ist diejenige, die mit dem eingebetteten Tomcat ausgeführt wird, der ohne die javax.el-Abhängigkeit ausgeführt wird. Als ich die pom.xml-Datei änderte, um den Starter für Tomcat auszuschließen und die Spring-Boot-Starter-Jetty-Abhängigkeit einzuschließen, erhalte ich diesen Fehler. Der Fehler wird sowohl für mvn clean install als auch für mvn clean-Paket ausgegeben. –

Antwort

0

Sie verwenden die javax.el Abhängigkeit korrekt. Wenn die JPA den Ruhezustand einzieht, wie Sie angegeben haben, wird der Hibernate-Validator verwendet. Es ist here angegeben. Das ist die richtige Lösung. Was die Dokumentation anbetrifft, würde ich persönlich es aufwerfen, aber ich vermute, dass nicht jeder das gleiche Problem haben wird. Ich kann immer noch meine mvn clean install ohne Fehler ausführen, aber wenn ich mvn spring-boot:run laufen, startet es und schaltet sich direkt danach.