Bắt "không thể tìm thấy Biểu tượng" trong dự án Java trong Intellij


96

Tôi thực hiện cuộc gọi này đến một cá thể singleton tĩnh từ lớp GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javachứa HUDlớp cũng như hai lớp liên quan khác, HUDTextElementHUDElement. Tất cả các lớp nằm trong cùng một đường dẫn gốc ../src/org/mypackage.

Tuy nhiên, khi biên dịch dự án java này trong IntelliJ, tôi không thể tìm thấy Biểu tượng HUD trên dòng tôi thực hiện HUD.getInstance()cuộc gọi.

Mã chính xác này biên dịch tốt trong nhật thực, bất kỳ ý tưởng vấn đề là gì?


1
Bạn có lớp HUD được nhập vào cả hai không?
Alex Coleman,

đây là giải pháp duy nhất cho vấn đề này mà làm việc cho tôi stackoverflow.com/a/56473166/8660553
Sahil Singhal

Câu trả lời:


167

Chọn Build-> Rebuild Project sẽ giải quyết được nó


17
Lưu ý cho noobs hoàn chỉnh để Java / IntelliJ: trên là khác nhau từ "xây dựng dự án"
hiljusti

4
@JustinHill - Tôi rất thành thạo với nhật thực và mới sử dụng IntelliJ. Bạn có thể giúp tôi về sự khác biệt giữa hai điểm và bất kỳ điểm / liên kết nào giúp tôi ổn định thời gian với IntellJ.
nanosoft

1
Tôi có lẽ là một tài nguyên tệ hơn tìm kiếm trên google, tôi chưa sử dụng Eclipse. Nhận xét của tôi là chỉ là "Rebuild Dự án" và "Xây dựng dự án" được tùy chọn khác nhau (Tôi đã giúp đỡ một ai đó tình cờ gặp này và họ không để ý sự khác biệt giữa các tùy chọn)
hiljusti

1
Tại sao nó hoạt động? Việc vô hiệu hóa bộ nhớ đệm và khởi động lại thậm chí không hoạt động.
b15

Làm việc .... Cố gắng chạy "biên dịch sạch maven" nhưng điều đó đã không giải quyết vấn đề
Omtara

54

Tôi đã gặp vấn đề tương tự, và hóa ra tôi chưa bao giờ biên soạn hoàn toàn dự án mới. Vì vậy, nhấp chuột phải và chọn Biên dịch '' (shift-cmd-F9 trên mac) đã sửa nó. Có vẻ như trình biên dịch khi lưu không 'nhìn thấy' các tệp không được biên dịch.

Đánh dấu thư mục src là nguồn không hữu ích trong trường hợp của tôi.


44

Tôi gặp sự cố tương tự và đã khắc phục nó bằng cách nhấp vào Tệp> Vô hiệu hóa bộ nhớ đệm / khởi động lại


1
Hãy chú ý - nếu bạn tình cờ có bất kỳ thay đổi nào và chúng không được cam kết, chúng sẽ bị mất. :)
Nikola

4
Bộ nhớ đệm không hợp lệ không dẫn đến thay đổi bị mất. Tôi thậm chí không chắc nó sẽ hoạt động như thế nào. Nếu bạn lưu một tệp, tệp đó sẽ được lưu, bất kể IntelliJ vào bộ nhớ đệm hay cam kết vào một kho lưu trữ.
Christopher Schneider

29

Đây có thể là thư mục ../src của bạn không được đánh dấu là thư mục "nguồn" trong Intellij IDEA, vì vậy nó không biết nhìn vào đó để tìm lớp của bạn. Bạn có thể nhấp chuột phải vào thư mục trong trình khám phá dự án và chọn "đánh dấu là thư mục nguồn" để sửa lỗi này.


1 là khả năng có thể xảy ra, nhưng không phải 2 là lỗi nói rằng nó không thể tìm thấy HUD, mà là lỗi nói rằng nó không có phương thức getInstance / update?
Alex Coleman,

tùy chọn này dường như đã biến mất.
clankill3r

Không, nó chuyển đổi thành các tùy chọn bật lên: "Đánh dấu thư mục là>"
Dracontis

Src của tôi chứa thư mục kiểm tra bên trong và nhiều mô-đun, sau khi đánh dấu nó là Gốc nguồn, vấn đề của tôi là tồi tệ nhất.
Se Song

Đối với tôi, điều này gần với câu trả lời đúng. Gốc nguồn của tôi đã được đánh dấu, nhưng tôi phải "Bỏ đánh dấu là Gốc nguồn" và sau đó đánh dấu lại là gốc Nguồn để sửa lỗi.
yanni

26

Tôi đã nhận được cùng một lỗi "không thể tìm thấy biểu tượng" khi tôi đã làm Build -> Make Project. Tôi đã sửa lỗi này bằng cách xóa /targetthư mục Maven của mình , nhấp chuột phải vào mô-đun dự án của tôi và thực hiện Maven -> Reimport, và thực hiện Build -> Rebuild Project. Đây là trên IntelliJ Idea 13.1.5.

Hóa ra đó Maven -> Reimportlà chìa khóa, vì vấn đề đã nổi lên một vài lần trước khi cuối cùng tôi làm được điều đó.


12

Cảm ơn sự giúp đỡ cho đến nay, hóa ra bản sửa lỗi là biên dịch HUD.java trước tiên (nhấp chuột phải vào tệp-> Biên dịch HUD.java). Sau khi biên dịch tệp java, phần còn lại của dự án có thể được biên dịch mà không gặp bất kỳ sự cố nào.

Tôi thực sự không biết tại sao điều này lại khắc phục được nó, hoặc tại sao IntelliJ không tự động làm điều này, nhưng lỗi root có vẻ như nó liên quan đến việc IntelliJ không xử lý chính xác việc có nhiều lớp trong một tệp .java.


1
IntelliJ có thể xử lý nhiều lớp trong một tệp duy nhất, nó chỉ cần đảm bảo rằng tệp đã được biên dịch tại một số điểm.
Makoto

Vâng, ngoại trừ việc tôi vừa gặp vấn đề tương tự với một tệp lớp duy nhất. Lạ lùng thay, nó đã được chạy tốt ngay trước khi tôi chạy lệnh maven này: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Nó có nghĩa là để di chuyển jar javafx từ thư mục libs sang thư mục ext cho JDK hiện tại. Tôi tìm thấy nó ở đây .
nihilon

7

Tôi phải nhấp chuột phải vào dự án và chọn "Reimport" trong menu con "Run Maven".


5

Tôi sử dụng maven trong dự án của mình. Vì một số lý do IntelliJ đã đưa cho tôi những lỗi wierd này. Tôi đã chạy sạch mvn và thử đồng bộ lại và những lỗi này đã biến mất.


1
sạch là một vòng đời của maven. Bạn sử dụng nó nếu bạn muốn xóa tất cả các tệp đầu ra đã được tạo bởi dự án maven.
Moiz Raja

5

Đối với tôi - tôi đã thử các bước này (Vô hiệu hóa bộ nhớ cache & Khởi động lại, Maven Reimport)) nhưng chúng không hoạt động. Vì vậy, tôi xóa .idea, .settings.projectthư mục và cố gắng - nó làm việc.


3
Xóa .ideathư mục đã làm điều đó cho tôi.
Daniel D.

4

Điều này đã xảy ra với tôi khi tôi xóa một thư mục và sau đó sao chép-dán nó trở lại dự án.

Right-click project folder -> Rebuild đã làm cho tôi.


3

Tôi đã đối mặt với cùng một vấn đề và có rất nhiều giải pháp được đưa ra trong câu trả lời, việc thử tất cả các giải pháp này khiến tôi mất khá nhiều thời gian, vì vậy ở đây tôi muốn đề xuất một cách tiếp cận có phương pháp nếu bạn gặp lỗi này.

Kiểm tra những thứ sau, tạo / cập nhật nếu thiếu thứ gì đó

  1. thư mục src được đánh dấu là thư mục nguồn
  2. tệp .imls hiện có
  3. Xử lý chú thích được bật
  4. Nếu gần đây bạn đã sử dụng @UtilityClass thì đó cũng có thể là lý do, Liên kết lỗi

Nếu mọi thứ đều ổn, bạn có thể thử các giải pháp sau theo thứ tự nhất định

  1. Biên dịch lại tệp / mô-đun

  2. Nếu điều đó không khắc phục được sự cố, hãy thử làm mới sự phụ thuộc của maven và xây dựng dự án bằng cách sử dụng Maven -> ReimportBuild -> Rebuild Project

  3. Thử mvn clean install -DskipTests

  4. Thử vô hiệu hóa bộ nhớ cache IntelliJ và khởi động lại IDE, sử dụng File > Invalidate caches/ restart

  5. Xóa thư mục .idea và nhập lại dự án

Tín dụng và Cảm ơn tất cả những người đã trả lời câu hỏi này, bạn có thể tham khảo câu trả lời của họ để biết thêm mô tả về từng điểm.


1
hoạt động: Thử vô hiệu hóa bộ nhớ cache IntelliJ và khởi động lại IDE, sử dụng Tệp> Không hợp lệ bộ nhớ đệm / khởi động lại
Energy

2

Tôi biết đây là một câu hỏi cũ, nhưng theo kinh nghiệm gần đây của tôi, điều này xảy ra do tài nguyên xây dựng bị xóa hoặc Idea không thể nhận ra chúng là nguồn.

Bất cứ nơi nào lỗi xuất hiện, hãy cung cấp các nguồn cho thư mục / thư mục và lỗi này phải được giải quyết.

Đôi khi, ngay cả khi chúng tôi gán nguồn cho cả thư mục, các lớp riêng lẻ vẫn có thể không khả dụng. Đối với người dùng mới, giải pháp đơn giản là nhập một bản sao mới và xây dựng lại ứng dụng để hoạt động tốt.

Bạn nên thực hiện cài đặt sạch sau đó.


2

biên dịch lại lớp Application.java chính đã làm điều đó cho tôi, nhấp chuột phải vào lớp> Biên dịch


2

Tôi biết chuỗi này đã cũ nhưng, một giải pháp khác là chạy

$ mvn clean install -Dmaven.test.skip=true

Và trên IntelliJ, làm CMD + Shift + A (mac os) -> gõ "Nhập lại tất cả các dự án Maven".

Nếu cách đó không hiệu quả, hãy thử buộc tải lại các phần phụ thuộc của maven

$ mvn clean -U install -Dmaven.test.skip=true

Trong trường hợp của tôi, có các lớp được tạo tự động (dựa trên tệp XML) mà các phần khác của mã tham chiếu. Trong khi xây dựng với maven hoạt động, nếu không được chỉnh sửa mvn install, IntelliJ đã không nhìn thấy những tham chiếu đó và không thành công môi trường chạy.
tokosh,

2

Đối với tôi, đó là sự cố với Lombok, vì nó yêu cầu bật Xử lý chú thích. Bạn có thể tìm thấy hộp kiểm này trênSettings > Build > Compiler > Annotation Processors


Cảm ơn bạn! CÁi này đã sửa nó giúp tôi.
nyarasha

1

Đối với trường hợp của tôi, vấn đề là khi sử dụng tính năng thử nghiệm @UtilityClass của Lombok trong dự án java của tôi trong Intellij Idea, để chú thích phương thức lớp là "tĩnh". Khi tôi đặt mỗi phương thức của lớp một cách rõ ràng là "tĩnh" thay vì sử dụng chú thích, tất cả các vấn đề biên dịch đã biến mất.


0

Vì đây là lần đầu tiên Google tìm kiếm lỗi "intelliJ không thể tìm thấy biểu tượng", tôi cũng sẽ đưa ra giải pháp của mình.

Vấn đề đối với tôi là dự án của tôi bắt nguồn từ Eclipse và một số tệp chứa sự phụ thuộc vào các lớp được tạo trong src/generated-sources bởi các thông số kỹ thuật trong pom.xml. Vì một số lý do, điều này không được thực thi đúng cách khi tôi mở dự án lần đầu tiên và việc xây dựng lại / nhập lại không giúp được gì, vì vậy các tệp không bao giờ được tạo.

Giải pháp là nhấp chuột phải vào mô-đun và chọn Maven -> Generate Sources and Update FoldersĐiều đó đã giải quyết được vấn đề và tôi có thể biên dịch.


0

Đảm bảo rằng tệp nguồn của lớp java mà bạn đang cố gắng tham chiếu đến có .javaphần mở rộng. Nó đã.aj trong trường hợp của tôi (tôi phải nhấn "Tạo khía cạnh" thay vì "Tạo lớp" khi tạo nó). IntelliJ hiển thị cùng một biểu tượng cho tệp này như cho lớp "bình thường", nhưng trình biên dịch không nhìn thấy nó khi xây dựng.

Thay đổi .ajđể .javasửa nó trong trường hợp của tôi.


0

Đôi khi lớp bạn muốn nằm trong testthư mục nguồn. Dù sao cũng đã xảy ra với tôi…


0

Tôi đã gặp vấn đề tương tự ngoại trừ việc tôi đang nhập các lớp mà các phần phụ thuộc không được giải quyết bằng cách nào đó. Tôi đã làm mới các dự án maven, Dự án xây dựng lại. Nó vẫn không giải quyết. Có vẻ như IntelliJ đã lưu vào bộ nhớ đệm không chính xác. Tôi đã khởi động lại IntelliJ và điều đó đã giải quyết được các phần phụ thuộc. Tôi đoán nó đã xóa bộ nhớ cache bằng cách nào đó.


0

Nếu bạn đang sử dụng Lombok, hãy đảm bảo rằng bạn đã bật xử lý chú thích.


0

Tôi thấy rất nhiều câu trả lời đề xuất xây dựng hoặc xây dựng lại nhưng trong trường hợp điều này không khắc phục được sự cố của bạn, chỉ cần lưu ý rằng IDEA có thể phát hiện một phương pháp nhưng nó sẽ không biên dịch trong trường hợp bạn có newtrước đó. mong đợi trường hợp.

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


0

Trong trường hợp của tôi, tôi gặp sự cố khi tìm lớp từ một mô-đun khác. Trong pom.xml, tôi chỉ có phụ thuộc này với <scope>compile</scope>được chỉ định. Xóa dòng này đã có ích.


-1

Tôi biết điều này là cũ, nhưng đối với bất kỳ ai khác, hãy đảm bảo rằng lớp bị thiếu nằm trong cùng một gói với lớp mà bạn gặp lỗi / nơi bạn gọi nó từ đâu.


Đã phản đối, vì các lớp có thể được nhập từ các gói khác. Nói chung, lớp đích phải được nhập và trong classpath; khi sử dụng Maven, phụ thuộc phải được đặt chính xác.
fxnn
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.