2011-02-10 36 views
25

Tôi đang cố gắng phân tích cú pháp một số chuỗi đối tượng JSON mà tôi đang sử dụng gson-1.6. Tôi đã đặt nó trong cùng một vị trí như các jars khác của tôi và đã thêm nó vào đường dẫn của tôi trong nhật thực.Tôi nhận được lỗi "java.lang.ClassNotFoundException: com.google.gson.Gson" mặc dù nó được xác định trong đường dẫn lớp của tôi

Các thư viện khác hoạt động tốt khi tôi thêm chúng và tôi có thể sử dụng chúng mà không gặp bất kỳ vấn đề gì, nhưng khi tôi cố gắng tạo đối tượng JSON, tôi nhận được lỗi chuẩn độ. Tôi đã xem qua các câu hỏi khác với lỗi này, nhưng tôi không thể tìm thấy một giải pháp không liên quan đến thứ gì đó mà tôi đã thử hoặc một thứ gì đó không liên quan.

tôi nhập nó ở gần đầu sử dụng:

import com.google.gson.Gson; 

Sau đó sử dụng nó sau này trong một hàm tĩnh như vậy:

Gson g = new Gson(); 

Đây là nhật thực của tôi tạo ra tập tin classpath [Đường dẫn] thay cho thực tế đường dẫn:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jre6"> 
     <attributes> 
      <attribute name="owner.project.facets" value="java"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.5"> 
     <attributes> 
      <attribute name="owner.project.facets" value="jst.web"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> 
    <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> 
    <classpathentry kind="lib" path="[Path]/jabbabase-ws-jwsdp-client-2.4.7.jar"/> 
    <classpathentry kind="lib" path="[Path]/log4j-1.2.16.jar"/> 
    <classpathentry kind="lib" path="[Path]/gson-1.6.jar"/> 
    <classpathentry kind="output" path="build/classes"/> 
</classpath> 

cũng như cửa sổ đường dẫn xây dựng của tôi: Build Path Screen

Tôi hơi lạc vào thời điểm này. Tôi đã thử Google và các bài viết về cơ bản chỉ nói để thêm vào đường dẫn xây dựng của bạn. Có ai có ý kiến ​​gì không?

Chỉnh sửa: Thông tin khác

Mã tham chiếu com.google.gson.GSON được sử dụng làm hạt nhân bằng jsp. Hàm này được gọi từ jsp và lỗi xảy ra ngay sau khi hàm được thực thi. Dòng đầu tiên trong hàm là:

Gson g = new Gson(); 

Dường như biên dịch và triển khai tốt, nhưng khi được thực thi, tôi nhận được thông báo lỗi.

Cảm ơn

+0

Bạn đang chạy mã của mình như thế nào? – Nick

+0

Thông qua IDE nhật thực, dưới dạng tệp jsp với tệp java đang được sử dụng làm bean – Fry

Trả lời

53

Trong trường hợp của một JSP/Servlet webapplication, bạn chỉ cần thả các tập tin JAR bên thứ 3 trong /WEB-INF/lib thư mục. Nếu dự án là Dự án web động, thì Eclipse cũng sẽ tự động quan tâm đến việc thiết lập đường dẫn xây dựng. Bạn làm không phải cần phải khéo léo với đường dẫn xây dựng Eclipse. Đừng quên hoàn tác tất cả.

+2

Tôi thực sự có tệp ở đó, nhưng vẫn không có may mắn. Nó sẽ gây ra một cuộc xung đột nếu tôi tham chiếu một bên ngoài của tôi và đã có một trong thư mục/WEB-INF/lib? – Fry

+0

Tóm lại, bạn đã thả 'gson-1.6.jar' trong'/WEB-INF/lib'? 'Json-lib-2.4-jdk15.jar' không phải là Gson. – BalusC

+0

Đúng, tôi đã chỉnh sửa bài đăng của mình để sửa rằng tôi đang sử dụng Gson chứ không phải json-lib. Và có, Gson-1.6.jar tồn tại trong thư mục/WEB-INF/lib của tôi cũng như thư mục không gian làm việc của tôi nơi tôi tham chiếu nó từ trong đường dẫn Xây dựng – Fry

5

Nhấp vào Deployment Assembly (ngay trên Java Build Path mà bạn hiển thị là đang hoạt động) và đảm bảo rằng bạn thấy json-lib-2,4-jdk15.jar tại đó.

Thông thường, bạn nên thêm nó vào đường dẫn xây dựng và xuất nó từ dự án của bạn. Sau khi được xuất, bạn sẽ thấy cảnh báo WTP rằng nó không phải là một phần của việc triển khai. Chọn tùy chọn Quick Fix và thêm tùy chọn đó vào đường dẫn triển khai của bạn.

+1

Lưu ý rằng phần này chỉ hữu ích cho các dự án hoặc thư viện bên ngoài không bị bỏ trong '/ WEB-INF/lib'. – BalusC

+0

Nó cũng hoạt động cho các thư viện trong/WEB-INF/lib. –

19

Tôi gặp phải sự cố tương tự và đã thử các giải pháp trên nhưng không có giải pháp nào phù hợp với tôi. Sau đó, tôi đã thử các bước sau và sự cố đã được giải quyết:

  • Chuyển đến thuộc tính dự án.
  • Đi tới tùy chọn Đường dẫn xây dựng Java.
  • Sau đó, thêm *.jar tệp làm jar bên ngoài.
  • Sau đó chuyển đến tùy chọn đặt hàng và xuất và chọn thư viện và lọ của dự án.
  • lưu các thay đổi hiện tại và làm sạch dự án và chạy lại dự án.
+1

Cảm ơn bạn đã chia sẻ, phương pháp này cũng đã làm việc cho một dự án Android của tôi! – Kingsolmn

+0

Cảm ơn bạn rất nhiều .. Đồng thời, sửa lỗi chính xác giống như tôi đột nhiên bắt đầu nhận được trong dự án Android của tôi sau khi cập nhật cửa sổ .. 6 giờ lãng phí cho đến khi tôi đọc điều này ... rất tức giận và mệt mỏi. –

+0

Cảm ơn, tôi đã gặp phải lỗi này trong một dự án Android. Giải pháp của bạn đã sửa nó. – Koderok

3

Tôi chỉ có cùng một vấn đề ...

Để giải quyết vấn đề (ít nhất là trong trường hợp của tôi) đảm bảo bạn đã bao gồm các thư mục lib trong nhóm của mình classpath:

Manifest-Version: 1.0 
... 
Bundle-ClassPath: lib/gson-1.6.jar, 
. 
... 

Hoặc nếu bạn muốn bao gồm tất cả các bình trong thư mục:

Bundle-ClassPath: lib/ 

Bạn vẫn sẽ cần đặt các tệp jar trên đường dẫn xây dựng java như minh họa ở trên. Sau đó, lọ nhập khẩu của bạn sẽ xuất hiện trong thư mục "Thư viện tham chiếu"

1

Đối với tôi, vấn đề đã được giải quyết bằng cách thêm các lọ trong thư mục APACHE/TOMCAT/lib của tôi! .

+0

Điều đó làm cho phần jar của classpath cho * every * webapp bạn chạy trong Tomcat. – nitind

0

Tôi đã gặp vấn đề tương tự khi phát triển nút/nút KNIME trong môi trường Eclipse. Giải pháp không chỉ để thêm gson.jar dưới dạng một JAR ngoại lệ vào đường dẫn xây dựng, nó cũng được yêu cầu để đi đến plugin.xml, sau đó là tab Phụ thuộc và thêm com.google.gson làm plugin bắt buộc.

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