Tôi đã tạo một thư viện nhỏ, cho phép gọi nó là lib
. Nó dependends trên một thư viện, sublib
trong đó có sẵn trong Maven Trung ương:IntelliJ không tải phụ thuộc transitive trong dự án maven
lib/pom.xml
:
<dependencies>
<dependency>
<groupId>3rdparty</groupId>
<artifactId>sublib</artifactId>
<version>x</version>
</dependency>
</dependencies>
Bây giờ tôi đang cố gắng sử dụng lib
trong dự án của tôi proj
. Tôi đã thiết lập nó như là một sự phụ thuộc:
proj/pom.xml
:
<dependencies>
<dependency>
<groupId>mynamespace</groupId>
<artifactId>lib</artifactId>
<version>y</version>
</dependency>
</dependencies>
Khi tôi chạy mvn exec:java -D exec.mainClass=mynamespace.proj.Main
chương trình chạy tốt. Tuy nhiên nếu tôi chạy nó từ IntelliJ, tôi nhận được lỗi sau:
java.lang.NoClassDefFoundError: 3rdparty/SomeSubLibClass
at mynamespace.SomeLibClass.method(SomeLibClass.java:100)
Điều này dường như chỉ ra rằng IntelliJ không tải phụ thuộc bắc cầu sublib
. Làm thế nào tôi có thể sửa lỗi này?
Đôi khi tôi phải nhấp chuột phải vào tệp 'pom.xml' trong cây tệp và chọn' maven> reimport'. (Trong trường hợp bạn không thử điều này) – kuporific
@kuporific Cảm ơn, đã sửa nó! Tôi đã thử "đồng bộ hóa" và các tùy chọn tương tự nhưng đã không tìm thấy được nêu ra ... Nếu bạn làm cho nó thành một câu trả lời tôi sẽ chấp nhận nó – dtech
Trong bối cảnh này "đồng bộ hóa" có nghĩa là "đồng bộ hóa với hệ thống tập tin" đó là không- trực quan nếu bạn có Maven trên não. – kuporific