2016-05-03 39 views
9

Tôi đang cố gắng sử dụng chuyển đổi để ghi lại phần còn lại của mình, và tôi đã có một số thành công, nhưng tôi đang nhấn vào một bức tường khi nói đến các tham số tài nguyên bị hạn chế. Tôi đang sử dụng JBoss RESTEasy với nhà cung cấp trình duyệt tính hợp lệ hibernate và Jackson 2.x chú thích POJO. Vấn đề tôi đang đánh là khi @ DecimalMin/@ DecimalMax chú thích được gặp tôi nhận được mộtXác thực javax với swagger & jboss

java.lang.NoSuchMethodError: javax.validation.constraints.DecimalMin.inclusive()Z 

Dường vênh vang rằng đang cố gắng sử dụng một phiên bản mới hơn của javax.validation.constraints. * (V1.1.0 .Final) library và jboss đang sử dụng một phiên bản cũ hơn (v1.0.0.GA). Tôi đã thử tất cả mọi thứ tôi có thể nghĩ đến để bao gồm các thư viện thích hợp để avail không có.

Môi trường là JBoss EAP 6.4.0.GA

entry của tôi vênh vang (pom.xml):

<dependency> 
    <groupId>io.swagger</groupId> 
    <artifactId>swagger-jaxrs</artifactId> 
    <version>1.5.8</version> 
</dependency> 

Ví dụ POJO Snippet:

... 
import javax.validation.constraints.DecimalMax; 
import javax.validation.constraints.DecimalMin; 
... 
@JsonInclude(JsonInclude.Include.NON_NULL) 
@Generated("org.jsonschema2pojo") 
@JsonPropertyOrder({ 
    "altM", 
    "altDatum" 
}) 
public class Altitude { 
@JsonProperty("altM") 
@DecimalMin("-2000") 
@DecimalMax("10000") 
@NotNull 
private Double altM; 
... 

Tôi đã thử rất nhiều về mọi thứ, nhưng tôi càng học được nhiều hơn, tôi tin rằng dưới đây là hai nỗ lực liên quan nhất của tôi để loại bỏ các phụ thuộc của tôi:

Cố gắng 1: Loại trừ javax.validation từ ngủ đông validator & let vênh vang bao gồm nó:

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-hibernatevalidator-provider</artifactId> 
    <version>3.0.16.Final</version> 
    <exclusions> 
     <exclusion> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Cố gắng 2: Bao gồm javax.validation v1.1.0.Final một cách rõ ràng:

<dependency> 
    <groupId>javax.validation</groupId> 
    <artifactId>validation-api</artifactId> 
    <version>1.1.0.Final</version> 
</dependency> 

Maven phụ thuộc Tree (nỗ lực 1):

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @  MissionPlanningService --- 
[INFO] mil.army.cerdec.cpi.mcas:MissionPlanningService:war:0.0.2-SNAPSHOT 
[INFO] +- org.jboss.resteasy:resteasy-jaxrs:jar:3.0.16.Final:compile 
[INFO] | +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.0_spec:jar:1.0.0.Final:compile 
[INFO] | +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile 
[INFO] | +- javax.activation:activation:jar:1.1.1:compile 
[INFO] | +- org.apache.httpcomponents:httpclient:jar:4.3.6:compile 
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.3.3:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.1.3:compile 
[INFO] | | \- commons-codec:commons-codec:jar:1.6:compile 
[INFO] | +- commons-io:commons-io:jar:2.1:compile 
[INFO] | +- net.jcip:jcip-annotations:jar:1.0:compile 
[INFO] | \- org.jboss.logging:jboss-logging:jar:3.1.4.GA:compile 
[INFO] +- org.jboss.resteasy:resteasy-hibernatevalidator-provider:jar:3.0.16.Final:compile 
[INFO] | +- org.hibernate:hibernate-validator:jar:4.3.1.Final:compile 
[INFO] | \- org.jboss.weld.se:weld-se:jar:2.1.0.Final:compile 
[INFO] +- commons-lang:commons-lang:jar:2.6:compile 
[INFO] +- org.jboss.resteasy:resteasy-jackson2-provider:jar:3.0.16.Final:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.6.3:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.6.3:compile 
[INFO] | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.6.3:compile 
[INFO] | \- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.6.3:compile 
[INFO] |  +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.6.3:compile 
[INFO] |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.6.3:compile 
[INFO] \- io.swagger:swagger-jaxrs:jar:1.5.8:compile 
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.4.5:compile 
[INFO] | \- org.yaml:snakeyaml:jar:1.12:compile 
[INFO] +- com.fasterxml.jackson.dataformat:jackson-dataformat-xml:jar:2.4.5:compile 
[INFO] | \- org.codehaus.woodstox:stax2-api:jar:3.1.4:compile 
[INFO] +- io.swagger:swagger-core:jar:1.5.8:compile 
[INFO] | +- org.apache.commons:commons-lang3:jar:3.2.1:compile 
[INFO] | +- org.slf4j:slf4j-api:jar:1.6.3:compile 
[INFO] | +- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.4.5:compile 
[INFO] | | \- joda-time:joda-time:jar:2.2:compile 
[INFO] | +- io.swagger:swagger-models:jar:1.5.8:compile 
[INFO] | | \- io.swagger:swagger-annotations:jar:1.5.8:compile 
[INFO] | \- javax.validation:validation-api:jar:1.1.0.Final:compile 
[INFO] +- javax.ws.rs:jsr311-api:jar:1.1.1:compile 
[INFO] +- org.reflections:reflections:jar:0.9.10:compile 
[INFO] | +- org.javassist:javassist:jar:3.19.0-GA:compile 
[INFO] | \- com.google.code.findbugs:annotations:jar:2.0.1:compile 
[INFO] \- com.google.guava:guava:jar:18.0:compile 

Vì vậy, câu hỏi của tôi là: làm thế nào để sử dụng Swagger với JBoss RESTEasy & Hibernate Validator?

P.S. Tôi mới để vênh vang/jboss/javaee vì vậy xin vui lòng tha thứ cho bất kỳ câu hỏi ngớ ngẩn và đừng ngần ngại hỏi thêm thông tin. Không chắc chắn chính xác những gì tôi nên cung cấp ở đây.

+0

Những loại môi trường co phải đây la? Một thùng chứa Java EE như JBoss EAP hoặc WildFly? Hoặc Java SE phong cách, Tomcat, vv? Và bạn có thể gửi biểu đồ phụ thuộc (mvn dependency: tree) không? – Gunnar

+0

Đã thêm vào câu hỏi. Môi trường là JBoss EAP 6.4.0.GA. Cây phụ thuộc để cố gắng # 1 ở trên. – Jeremy

+0

Từ những gì tôi có thể nói nỗ lựC# 1 đang làm những gì tôi mong đợi và vênh vang là bao gồm các thư viện javax.validation với phiên bản thích hợp. Vì vậy, tôi chết lặng là tại sao tôi nhận được NoSuchMethodError ... – Jeremy

Trả lời

0

Hóa ra JBoss EAP đã cung cấp phiên bản riêng của thư viện xác thực (phiên bản cũ).

tôi là bản sao có thể trong tập tin xác nhận .jar đúng và chỉnh sửa các tập tin module.xml tại địa chỉ:

$JBOSS_HOME/modules/system/layers/base/javax/validation/api/main 

Sau đó chỉ JBoss vào thư viện xác nhận chính xác:

... 

<module xmlns="urn:jboss:module:1.1" name="javax.validation.api"> 
    <resources> 
     <!-- OLD ONE: <resource-root path="validation-api-1.0.0.GA-redhat-3.jar"/> --> 
     <!-- NEW ONE BELOW: --> 
     <resource-root path="validation-api-1.1.0.Final.jar"/> 
     <!-- Insert resources here --> 
    </resources> 
    <dependencies> 
     <module name="org.jboss.logging"/> 
    </dependencies> 
</module> 
Các vấn đề liên quan