2012-07-09 25 views
6

Tôi nhận được lỗi sau - Tôi đã thêm GSon vào sự phụ thuộc của tôi -GSON không được nhập vào maven pproject

Ai đó có thể chỉ ra những gì tôi đang làm sai?

enter image description here

Edit: phụ thuộc quy định -

<dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>1.7.1</version> 
    </dependency> 

Tôi đang sử dụng đoạn mã sau vào sevlet tôi -

JSONService json = new JSONService(); 
    String json_output = json.makeLoginJSON(user); 

makeLoginJSON ---

public String makeLoginJSON(LoginDetails user) { 
    String FinalJson = null; 
    Gson gson = new Gson(); 
    FinalJson = gson.toJson(user);  
    return FinalJson;  
} 
+0

khai báo phụ thuộc maven của bạn là gì? –

+0

bạn đang sử dụng công cụ gì để xây dựng dự án của mình? Và xin vui lòng gửi cấu hình phụ thuộc của bạn – Dave

+0

nó có thể truy cập, hãy cố gắng cập nhật phụ thuộc maven, nếu nó không hoạt động, hãy thử để loại bỏ các gói từ kho lưu trữ maven địa phương của bạn và buộc nó để tải về một lần nữa. Hãy thử nó với một phiên bản mới có thể làm việc quá. –

Trả lời

11

Thử:

<dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
</dependency> 

Tôi đã chỉnh sửa nhận xét của mình và thêm phạm vi. Phạm vi mặc định là biên dịch, có nghĩa là sự phụ thuộc không có trong thời gian chạy. Đối với điều này, bạn sử dụng được cung cấp phạm vi. Tìm hiểu thêm về phạm vi phụ thuộc maven trên số Introduction to Maven Dependencies của Apache.

Hy vọng điều này sẽ khắc phục được sự cố của bạn.

P .: nếu bạn đang tạo kho lưu trữ của riêng mình, bạn cũng nên xem here.

+0

Eclipse không cho tôi bất kỳ lỗi nào ... Tôi có thể thực hiện "import com.google.gson.Gson;" – Fox

+0

Bạn đã cố gắng thêm thư viện Gson theo cách thủ công vào đường dẫn lớp của dự án chưa? Vì vậy, bạn có được một ý tưởng cho dù đó là một vấn đề liên quan đến Maven hay không. Tôi nghĩ rằng hầu hết có lẽ nó là một vấn đề classpath, mặc dù Maven nên teoretically giải quyết điều đó (xem này: http://stackoverflow.com/questions/4961336/i-am-getting-java-lang-classnotfoundexception-com-google- gson-gson-error-even) –

-1

Hãy thử:

<dependency> 
    <groupId>com.alibaba</groupId> 
    <artifactId>fastjson</artifactId> 
    <version>1.1.21</version> 
</dependency> 

Rất nhanh chóng, đơn giản để sử dụng.

VO obj = ...; 
String jsonString = JSON.toJSONString(obj); 

VO obj2 = JSON.parseObject(jsonString, VO.class); 
+0

Bị bỏ qua vì đây không phải là câu trả lời cho câu hỏi. – pizzamonster

3

Chỉ cần làm rõ về câu trả lời của Raul - tốt mà nó làm việc cho bạn, nhưng cung cấp là phụ thuộc mà dự kiến ​​sẽ có sẵn từ JRE/JDK, tức là lớp servlet. Biên dịch là mặc định và nên hoạt động trong các trường hợp của người khác, vì gson không có sẵn từ một JRE, thay vào đó nó cần được tải xuống bởi maven. Từ http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope:

biên dịch Đây là phạm vi mặc định, được sử dụng nếu không có quy định nào được chỉ định. Các phụ thuộc biên dịch có sẵn trong tất cả các classpath của một dự án. Hơn nữa, những phụ thuộc đó được truyền cho các dự án phụ thuộc.

cung cấp Điều này giống như biên dịch, nhưng cho biết bạn mong đợi JDK hoặc vùng chứa cung cấp sự phụ thuộc trong thời gian chạy. Ví dụ, khi xây dựng một ứng dụng web cho Java Enterprise Edition, bạn sẽ thiết lập sự phụ thuộc vào API Servlet và các API Java EE có liên quan đến phạm vi được cung cấp bởi vì thùng chứa web cung cấp các lớp đó. Phạm vi này chỉ có sẵn trên đường dẫn biên dịch và kiểm tra, và không phải là transitive.

thời gian chạy Phạm vi này cho biết rằng không cần phải phụ thuộc để biên soạn, mà là để thực thi. Đó là trong thời gian chạy và kiểm tra classpaths, nhưng không phải là classpath biên dịch.

kiểm tra Phạm vi này chỉ ra rằng phụ thuộc không cần thiết cho việc sử dụng thông thường của ứng dụng và chỉ có sẵn cho giai đoạn biên dịch và thực thi thử nghiệm.

hệ thống Phạm vi này tương tự như được cung cấp ngoại trừ việc bạn phải cung cấp JAR chứa nó một cách rõ ràng. Tạo phẩm luôn luôn có sẵn và không được tra cứu trong kho lưu trữ.

nhập (chỉ có trong Maven 2.0.9 hoặc mới hơn) Phạm vi này chỉ được sử dụng trên phụ thuộc loại pom trong phần. Nó chỉ ra rằng POM được chỉ định nên được thay thế bằng các phụ thuộc trong phần của POM. Vì chúng được thay thế, các phụ thuộc với một phạm vi nhập khẩu không thực sự tham gia vào việc hạn chế sự chuyển đổi của sự phụ thuộc.

+0

cảm ơn bạn đã đăng bài này! – user123321

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