Giải quyết lỗi java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull
Java
85
White

LinhPT viết ngày 26/01/2016

Hiện tượng

Project mình đang làm hiện tại không sử dụng central maven mà sử dụng trực tiếp jar file rồi chỉ định path để dùng.
Gần đây team có quyết định move lên maven thì gặp hiện tượng một số đoạn code từ trước đến này vẫn chạy gặp lỗi:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    at com.google.common.cache.CacheBuilder.getKeyStrength(CacheBuilder.java:533)
    at com.google.common.cache.LocalCache.<init>(LocalCache.java:237)
    at com.google.common.cache.LocalCache$LocalManualCache.<init>(LocalC

Vấn đề và giải quyết

Sau khi tìm hiểu thì thấy lỗi trên là do trong depedency hiện tại phụ thuộc cả vào 2 thư viện google-collectionsguava.
2 thư viện này là một, và guava chính là version nâng cấp của google-collections.
Chính vì chúng nó là một nên sử dụng cùng namespace là com.google, tuy nhiên điểm bựa là 2 thằng này lại có artifactId và groupId khác nhau.
Chính vì thế maven không phát hiện ra collision để mà thông báo mà cứ import vào, dẫn đến việc library sử dụng guava sẽ sử dụng phải logic cũ của google-collections,
mà cụ thể là hàm firstNonNull không có trong google-collections mà lại có ở guava, dẫn đến lỗi trên.

Cách giải quyết là remove depedency của google-collections đi sử dụng tag exclusion

pom.xml

<exclusions>
     <exclusion>
         <groupId>com.google.collections</groupId>
         <artifactId>google-collections</artifactId>
     </exclusion>
</exclusions>
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

LinhPT

20 bài viết.
62 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
39 3
Mình thi thoảng phải quản lý linux server, mà trong đó có một số thao tác quản lý quan trong như quản lý đĩa cứng, quản lý mạng, quản lý đường truy...
LinhPT viết 3 năm trước
39 3
White
27 2
(Ảnh) Tiêu đề chỉ là câu khách :v, thực ra là có một vài điểm về mysql explain mà chắc chưa nhiều bạn biết, tớ cũng hay quên nên note lại cho nhớ ...
LinhPT viết 3 năm trước
27 2
White
18 0
Bài viết được dịch từ http://qiita.com/sion_cojp/items/04a2aa76a1021fe77079 Điều cần nhớ trước khi đánh bất kì câu lệnh nào ①Để tránh làm nặng...
LinhPT viết hơn 1 năm trước
18 0
Bài viết liên quan
White
0 0
Trong bài viết này, một số hình ảnh hoặc nọi dung có thể bị thiếu do quá trình chế bản. Vui lòng xem nội dung ở blog gốc sau: (Link) (Link), chúng...
programmerit viết hơn 3 năm trước
0 0
Male avatar
10 5
Facade Design Patern Facade Patern thuộc vào họ mô hình cấu trúc (structural patern). Facade patern phát biểu rằng : "just provide a unified an...
DuongVanTien viết 2 năm trước
10 5
White
4 2
Một số hàm giúp mapping data đơn giản với Groovy Ví dụ với list data như sau: def student1 = name: "Huan", age: 22, gender: "male"] def student...
Tất Huân viết 5 tháng trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
20 bài viết.
62 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!