2013-06-07 36 views
10

Xin chào Tôi đang cố gắng theo dõi Getting Started guide cho Jersey 2.0.Jersey 2.0 "Bắt đầu" hướng dẫn, mainClass không tìm thấy

Tôi đã thực hiện các bước 1.1 và 1.2. Không sao cả.

Đối với bước 1.3, tôi gặp sự cố khiến con quạ không thể tìm thấy chú thích javax 1.2 nhưng tôi đã giải quyết nó theo lời khuyên of another Stackoverflow user và thêm một kho lưu trữ vào pom của tôi.

Vì vậy mvn clean test đi không có vấn đề, NHƯNG khi tôi cố gắng chạy mvn clean exec:java tôi nhận được lại

[WARNING] java.lang.ClassNotFoundException: com.example.Main 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) 
at java.lang.Thread.run(Thread.java:722) 

Các pom.xml là một tạo ra bởi các lệnh sau:

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ 
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ 
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \ 
-DarchetypeVersion=2.0 

nơi chỉ bổ sung tôi đã thực hiện như sau:

<repositories> 
    <repository> 
    <id>java.net.repo</id> 
    <url>https://maven.java.net/content/groups/promoted/</url> 
    <layout>default</layout> 
    </repository> 
</repositories> 

Trong trường hợp nó được quan tâm, đây là đầu ra của mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200) 
Maven home: /usr/share/maven 
Java version: 1.7.0_21, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/jre 
Default locale: el_GR, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac" 
+1

bạn có một lớp có tên 'Main'? –

+0

yeap, được tạo mặc định bởi maven theo src/main/java/com/example. Thực tế là có hai lớp được tạo tự động Main.java và MyResource.java (được mô tả trong hướng dẫn sử dụng) – user2465039

Trả lời

20

Tôi có thể tạo lại lỗi của bạn. Điều này không liên quan gì đến Jersey; đó là một lỗi bạn đang làm với Maven. mvn clean exec:java nói: "xóa tất cả các tệp .class và sau đó thử chạy tệp Main .class". Vì bạn đã xóa nó, Maven không thể tìm thấy nó. Đây là giải pháp:

mvn clean compile exec:java 

Điều này sẽ khắc phục được sự cố trong câu hỏi của bạn. Điều này nói "xóa tất cả các tệp .class, biên dịch lại chúng từ nguồn và sau đó thử chạy tệp Main .class"

Để vượt qua lỗi tiếp theo bạn sẽ thấy, hãy xóa dòng <scope>test</scope> khỏi phụ thuộc của ứng dụng khách trong pom.xml:

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <scope>test</scope> 
</dependency> 

Để:

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
</dependency> 
+1

Cảm ơn. Tôi không biết về maven, nhưng tôi giả định rằng exec: java sẽ phụ thuộc vào biên dịch. Trong mọi trường hợp, tuy nhiên, ngay cả khi loại bỏ phạm vi từ pom.xml tôi bây giờ nhận được một bó của java.lang.NoClassDefFoundError: org/glassfish/jersey/client/ClientConfig. Tôi nghĩ rằng hướng dẫn bắt đầu của jersey không dành cho người mới bắt đầu :-) – user2465039

+0

@ user2465039 đọc phần dưới cùng của câu trả lời của tôi. Nó cho thấy cách khắc phục điều đó. –

+0

Cảm ơn! Tôi đã loại bỏ các phạm vi sai :-) Một người nào đó cần phải cập nhật các hướng dẫn mặc dù. Tôi sẽ bầu cho bạn nhưng tôi chưa có đủ điểm ở đây :-) – user2465039

Các vấn đề liên quan