Gói Maven hoạt động nhưng bản dựng của Intellij không thành công


91

Tôi có một dự án JDK 1.7 với sự phụ thuộc của maven vào một jar cục bộ trong kho maven của tôi.

Tôi không thể xây dựng dự án bằng Intellij, với các lỗi không tìm thấy biểu tượng (biểu tượng là một lớp nhập các gói từ bình cục bộ)

Nhưng tôi có thể xây dựng thành công dự án bằng cách sử dụng 'gói mvn'.

Tôi đã dành rất nhiều thời gian để tìm kiếm giải pháp, những điều tôi đã làm:

  • Bộ nhớ cache không hợp lệ
  • 'mvn clean install' the local jar dependecy
  • Được đánh dấu là 'tự động tải ảnh chụp nhanh' trong cấu hình maven của Intellij
  • Maven được khởi tạo lại trong Intellij
  • Đồng bộ hóa

Lỗi này đã xảy ra với tôi một vài lần trước đây, nhưng thường chỉ cần đóng Intellij và / hoặc thực hiện 'cài đặt sạch mvn' đã thực hiện thủ thuật.

Xin vui lòng giúp đỡ.


1
Kho lưu trữ maven của bạn có cấu hình chính xác với IntelliJ không?
Ruchira Gayan Ranaweera

đúng vậy, đường dẫn cho kho lưu trữ là đường dẫn được cập nhật khi tôi sử dụng 'mvn install'
Yarin Miran

3
Bình cục bộ là một ảnh chụp nhanh hay một phiên bản phát hành của jar? Nếu jar là một ảnh chụp nhanh, bạn phải chọn 'Luôn cập nhật ảnh chụp nhanh' trong cài đặt intellij Maven để buộc cập nhật cho ảnh chụp nhanh.
F. Geraerts

vâng, đó là một ảnh chụp nhanh, tôi đã đánh dấu tùy chọn đó. Nhưng vẫn không có gì thay đổi :(
Yarin Miran

1
Trong phần Trình biên dịch của Cài đặt, "sử dụng bản dựng bên ngoài" có được chọn không? Và trong Sử dụng bản dựng bên ngoài, tùy chọn "Xây dựng lại mô-đun khi thay đổi phụ thuộc" cũng được chọn?
F. Geraerts

Câu trả lời:


154

Tôi biết điều này là muộn nhưng thực hiện mvn idea:ideagiải quyết vấn đề.


3
Đây phải là câu trả lời được chấp nhận, vì nó cung cấp một giải pháp thực tế, không chỉ là lý do tại sao nó không thành công. Tất cả các cập nhật của tôi!
Warkst

4
mvn idea:ideachưa được thường xuyên cập nhật, và không được duy trì bởi JetBrains
Sean

2
Tôi đã phải chạy lại cài đặt mvn sau đó
Fabio F.

1
Sau đó chỉ cần xây dựng lại dự án. Cảm ơn bạn.
Duc Tran

2
Bạn đã cứu tôi khỏi tuyệt vọng. Tôi muốn hôn em
Martin Bamford

28

Cố gắng xóa tất cả .iml và POM của bạn. Sau đó, sao chép và dán lại POM của bạn vào dự án của bạn và mở lại và nhập lại.


13
Có lẽ chỉ cần cố gắng "nhập lại tất cả" trong chế độ xem Dự án Maven, trước khi xóa bất kỳ thứ gì
Zveratko

2
Tôi cũng phải xóa .iml, nhập lại maven không sửa được.
Daniel de Zwaan

1
@masoodg, cảm ơn bạn rất nhiều! bạn đã cứu ngày của tôi! Chỉ nhập lại không giúp được gì. Làm theo hướng dẫn của bạn, và nó hoạt động như một sự quyến rũ.
tabalin

Đóng Intellij, xóa *.iml, *.ipr*.iwstập tin từ thư mục gốc của dự án, sau đó mở lại Intellij cố định nó cho tôi
theferrit32

16

Tôi đã phát hiện ra rằng tệp .iml và pom của tôi xung đột và gây ra sự cố.


1
Tôi có vấn đề tương tự. Tôi có cấu hình với plugin ngày xây dựng. Plugin này yêu cầu thuộc tính buildDate với giá trị này "$ {maven.build.timestamp}". IntelliJ gặp sự cố khi phân tích cú pháp tệp pom này và tệp iml không được đồng bộ hóa đúng cách với pom. Khi tôi nhận xét đồng bộ hóa thuộc tính buildDate hoạt động tốt.
chalimartines

9
bất kỳ lời khuyên về cách khắc phục điều này? Tôi chỉ muốn để Intellij với công việc, có vẻ như Netbeans chạy bất kỳ dự án không có vấn đề gì ... đây là một tàu khu trục suất hoàn chỉnh :( ...
Breno Salgado

1
Tôi không biết liệu bản sửa lỗi của bạn có giống nhau không nhưng tôi đã phải thoát và tải lại dự án để buộc IntelliJ cập nhật tệp IML của nó (nó đã không làm mới nó từ pom.xml vì tôi đã thêm một số phụ thuộc mới)
SonarJetLens

1
'Làm thế nào' khá hữu ích hơn 'tại sao'. Vui lòng thêm một số chi tiết về cách bạn khắc phục sự cố này.
João Matos

2
Tôi đã đóng IntelliJ. Sau đó, tôi đã xóa C:\Users\USERNAME\.IntelliJIdea2017.2\system. Sau đó, tôi đã thực hiện git clean -xdftrong thư mục nguồn để xóa tất cả các tệp không có phiên bản và nhập lại dự án. Làm việc giống như một nét duyên dáng bây giờ.
koppor

15

Thêm một số mẹo nữa vì đây là điều đầu tiên xuất hiện trong tìm kiếm khi tôi gặp sự cố tương tự (dự án xây dựng trong mvn, không phải trong IntelliJ), trong trường hợp nó có thể giúp ích cho người khác.

Khi tôi có điều này, đó là một bản sửa lỗi khác trên Windows và Mac.

Trên Mac, tôi đã truy cập ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory và đặt nó để sử dụng Maven được cài đặt riêng của tôi thay vì Maven đi kèm. Tất cả các vấn đề xây dựng đã biến mất.

Trên Windows, tôi thấy các ngoại lệ trong idea.log liên quan đến SSL và cây dự án của tôi chỉ có Java trong nhánh Thư viện bên ngoài. Khi nhìn vào các trang web khác, có vẻ như IntelliJ sử dụng JDK riêng của mình thay vì hệ thống (mặc dù trong trường hợp của tôi, tôi đã cài đặt cùng một phiên bản JDK chính xác). Hệ thống của tôi JDK đã cài đặt chứng chỉ trong kho khóa cho máy chủ Nexus của công ty mà JDK riêng IntelliJ không có, vì vậy các ngoại lệ đã được đưa ra khi nó cố gắng lấy tệp từ Nexus. Đối với điều này, giải pháp là thoát IntelliJ, đặt một biến môi trường có tên là IDEA_JDK để trỏ đến JDK mà tôi đã cài đặt có chứng chỉ thích hợp và khởi động lại IntelliJ. Tất cả các vấn đề xây dựng đã biến mất.


vấn đề tương tự trên Linux với IntelliJ 2016.3.5 mới nhất - đầu tiên nó hoạt động, sau đó sau một số thay đổi POM, nó đã đồng bộ hóa và chỉ chuyển đổi Maven impl mới giúp ích, vì vậy cũng có thể chỉ cần chuyển đổi Maven sẽ kích hoạt cập nhật trong IntelliJ gây ra dự án sẽ được đồng bộ hóa trở lại ...
Gregor


5

IDE sử dụng bản sao Maven đi kèm của riêng mình khi xây dựng. Nếu maven trên terminal khác với IDE, thì bạn muốn chúng giống nhau.

GOTO (Trên máy Mac) - IntelliJ Idea -> Preferences -> Build, Execution, Deployment -> Build Tools -> Maven. Đặt đường dẫn cho Maven Home Directory của bạn Để tìm đường dẫn cho Maven mà bạn sử dụng từ terminal, hãy nhập lệnh mvn -versionvà lệnh đó sẽ in ra nhiều chi tiết bao gồm đường dẫn dir. Đặt nó vào Maven Home Directory .

Để an toàn, bạn cũng có thể làm tương tự đối với vị trí JDK

==== Một số điều khác có thể gây ra sự cố như vậy ===

Nếu thực hiện mvn package hoặc mvn clean install build, thì nó phải làm gì đó với IDE cache. Trong số những thứ khác, cái này thường giúp khắc phục những lỗi như vậy ->

Tệp -> Không hợp lệ bộ nhớ cache


4

Tôi biết mình đến khá muộn với cuộc trò chuyện này, nhưng tôi chỉ muốn đăng bài này trong trường hợp người khác gặp phải vấn đề này. Một lý do khác tại sao điều này xảy ra là do bạn không tham khảo đúng kho lưu trữ. Intellij chọn phiên bản đi kèm của jar theo mặc định thay vì phiên bản từ kho lưu trữ maven của riêng bạn. Xác nhận rằng kho lưu trữ được kết nối là đúng.


Nếu bạn đã cài đặt maven sử dụng homebrew, thiết lập thư mục home maven một cách chính xác (ví dụ) /usr/local/Cellar/maven/3.5.4/libexec giải quyết vấn đề này
sushilshimpi

3

Trong trường hợp của tôi iml của tôi không được đồng bộ hóa, vì vậy tôi đã xóa iml cho mô-đun cụ thể và sau đó trong tùy chọn maven, chọn dự án bỏ qua để tạo lại iml


3

từ dấu nhắc lệnh thực hiện dấu phẩy: mvn idea:ideavà nhấp chuột phải vào dự án -> từ menu nhập lại các phần phụ thuộc


1

"không thể tìm thấy biểu tượng" có nghĩa là intellij không thể giải quyết "phụ thuộc". Vì vậy, bạn có thể buộc "Phân tích mức độ phụ thuộc" bằng cách nhấp vào "Phân tích" -> "Phân tích mức độ phụ thuộc" rồi chọn "Phạm vi phân tích"


1

Nhiều mẹo có giá trị trong các câu trả lời khác ở đây, tôi chỉ muốn thêm giải pháp phù hợp cho vấn đề của tôi .

Gần đây, chúng tôi đã bắt đầu sử dụng kho lưu trữ Maven riêng và luôn làm mvn -s settings.xmlkhi gọi cmdline Maven. IntelliJ tất nhiên không biết về private repo, vì vậy nó cần một chút trợ giúp.

Đi tới Cài đặt -> Xây dựng, Thực thi, Triển khai -> Công cụ xây dựng -> Maven và ghi đè tùy chọn "Tệp Cài đặt Người dùng".

nhập mô tả hình ảnh ở đây


1

Tôi đã từng gặp vấn đề tương tự. Đi đến:

Tệp -> Cấu trúc dự án -> Mô-đun . Chọn mô-đun của bạn và trong tab " Phụ thuộc ", đảm bảo rằng tất cả các phụ thuộc maven đều được thêm vào.

Để đảm bảo bạn đã được cảnh báo về vấn đề tương tự trong trình chỉnh sửa ý tưởng: hãy chuyển từ "tab Phụ thuộc" sang "Nguồn" và thêm đánh dấu src của bạn là nguồn.


0

Tôi đã từng gặp vấn đề tương tự. Tôi đã thay đổi phiên bản maven từ 3.0.5 sang 3.0.4 trong cài đặt Idea và hiện tại tất cả đều hoạt động tốt. Không biết tại sao điều đó giúp tôi.


0

Tôi đã thử vô hiệu hóa bộ nhớ cache, thay đổi Maven thành phiên bản đã cài đặt và không có gì hoạt động.

Đóng và tạo lại một dự án mới đã giải quyết nó.


0

Tôi đã đóng dự án và nhập lại bằng cách nhấp vào thư mục gốc (không chỉ thư mục, mà còn chính tệp pom).


0

Tôi đã thử mọi thứ ở trên mà không có niềm vui. Tuy nhiên, tôi đã làm một điều mà cuối cùng nó đã hoạt động:

Tôi đã truy cập C: \ Users \ .IntellijJIdea2018.2 và vừa xóa toàn bộ thư mục.

Nó xóa tất cả các cài đặt và bộ nhớ cache cho IntelliJ. Tôi đã phải nhập lại dự án của mình từ đầu nhưng một thao tác xóa và nhập lại đơn giản đã không hoạt động trước đây, nhưng điều này cuối cùng đã khiến nó hoạt động trở lại.


0

Nếu bạn đang sử dụng gradle, hãy thử lệnh dưới đây. Điều này đã giải quyết được sự cố của tôi

gradle cleanIdea idea


0

Thủ tục đơn giản này mất khoảng 1 phút mà không có bất kỳ rủi ro nào.

  • Đóng IntelliJ
  • CHỈ Xóa các tệp cụ thể của IntelliJ như .idea / *, * .iml, .settings, v.v. Được đề xuất cũng xóa POM, nhưng đó là IMHO không cần thiết.
  • Sau đó, tạo lại dự án trong IntelliJ bằng cách sử dụng: Tệp > Mới> Dự án từ Nguồn hiện có> làm theo các bước. Lưu ý KHÔNG nhập nhiều hồ sơ hoặc (cùng một dự án).

0

Xóa thư mục .idea và đóng IDE

mở lại IDE và nhập dự án sẽ thực hiện nhập mới vì thư mục .IDEA đã bị chúng tôi xóa trước đó

Kiểm tra mô-đun thư viện bên ngoài và nếu nó không được điền các phụ thuộc bắt buộc thì hãy kiểm tra xem vị trí maven settings.xml có được cung cấp chính xác trong IDE không


0

Cũng có một khả năng đã không được đề cập. Nếu bạn nhập thư viện từ com.sun.*. Nó cũng sẽ gây ra vấn đề này.

Các chương trình hoạt động khi chạy trong id, vì com.sun.*tất cả các lớp này đều nằm trong jre/libthư mục, nó sẽ được tải khi chạy. Nhưng khi bạn chạy mvn package, các thư viện này sẽ không thể truy cập được vì hạn chế của oracle kể từ java 1.6 (các thư viện này theo một cách nào đó không được chấp nhận). Để giải quyết vấn đề này, bạn có thể thêm

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

nhớ thay thế cootclasspath bằng đường dẫn của riêng bạn rt.jar

Bạn có thể tìm kiếm Access restriction: The type XXX is not accessible due to restriction on required libraryđể biết thêm chi tiết.


0

Nếu có các mô-đun bị sai cấu hình, hãy thực hiện các bước sau:

  • Đi tới Cài đặt dự án
  • Đi tới Mô-đun
  • Xóa các mô-đun không nên ở đó

0
  1. Từ tab maven nhấp vào + và chọn pom.xml
  2. Từ tab maven nhấp vào tải xuống nguồn và tài liệu
  3. Trên cấu trúc dự án (nơi bạn có thể xem các tệp / thư mục dự án) nhấp chuột phải vào dự án bạn đang cố gắng xây dựng và chọn Xây dựng Tên dự án mô-đun.
  4. Từ tab Chạy- Chỉnh sửa Cấu hình với + thêm Ứng dụng và điền vào các trường dưới đây: i. Lớp chính - Chọn thủ công từ tab Dự án chọn lớp chính ii. Sử dụng classpath của mô-đun - chọn tên ứng dụng iii. Rút gọn dòng lệnh - tệp classpath
  5. Bây giờ chỉ cần chạy ứng dụng.

0

Trong trường hợp của tôi, sự cố nằm trong phiên bản Project Java SDK khác. Khi tôi xây dựng dự án từ thiết bị đầu cuối, maven sử dụng Java 8 và khi tôi xây dựng từ IDEA, nó sử dụng Java 11.

Đi tới Tệp> Cấu trúc Dự án ... và trong Cài đặt Dự án, đặt SDK Dự án thành phiên bản bạn cần.


0

Đối với tôi, vấn đề là tôi đã chọn trình biên dịch Ajc trong cài đặt Trình biên dịch Java IntelliJ . Sau khi tôi thay đổi nó trở lại Javac, mọi thứ hoạt động tốt.


0

Đối với tôi trong Mac, tôi đã giải quyết nó bằng cách xóa Ứng dụng Ý tưởng Intellij khỏi máy tính của mình và xóa các tệp bộ đệm trong ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Sau đó, cài đặt lại nó, mở dự án của tôi và xây dựng nó thành công!


0

Tôi gặp phải vấn đề tương tự. Tôi có thể chạy thành công mvn clean packagelệnh trong thiết bị đầu cuối nhưng không thể chạy hoặc xây dựng từ IntellJ. Tôi đã thực hiện các thao tác sau nhưng đều không thành công.

  • Bộ nhớ cache không hợp lệ
  • chạy mvn clean packagehoặc mvn clean packagetrong thiết bị đầu cuối
  • Được đánh dấu là 'tự động tải ảnh chụp nhanh' trong cấu hình maven của Intellij
  • Đồng bộ hóa hoặc nhập lại
  • Xóa tất cả các tệp liên quan đến IntellJ như .idea và nhập lại dự án
  • loại bỏ tất cả các tệp phụ thuộc và sau đó chạy mvn clean package
  • Chuyển phiên bản Java hoặc sử dụng Java nhúng trong IntellJ
  • chạy mvn idea:idea
  • Thay đổi Trang chủ Maven
  • đánh dấu thư mục src làm nguồn trong tab mô-đun

Điều cuối cùng tôi đã làm: Xóa .idea và .iml trong dự án, xóa tất cả các tệp phụ thuộc và sau đó xóa IntellJ khỏi máy tính. Sau khi cài đặt lại IntellJ, dự án của tôi đã được xây dựng thành công. Tôi ước tôi có thể có một cách tốt hơn để giải quyết vấn đề này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.