Lỗi “Không thể tìm thấy biểu tượng” hoặc “Không thể giải quyết biểu tượng” nghĩa là gì?

422
Stephen C 2014-09-07 15:12.

Vui lòng giải thích những điều sau về lỗi "Không thể tìm thấy biểu tượng", "Không thể giải quyết biểu tượng" hoặc "Không tìm thấy biểu tượng":

  • Có ý nghĩa gì?
  • Những điều gì có thể gây ra chúng?
  • Lập trình viên sẽ sửa chúng như thế nào?

Câu hỏi này được thiết kế để bắt đầu một câu hỏi và đáp toàn diện về các lỗi biên dịch phổ biến này trong Java.

15 answers

441
Stephen C 2014-09-07 15:12.

0. Có sự khác biệt nào giữa hai lỗi không?

Không hẳn vậy. "Không thể tìm thấy biểu tượng", "Không thể giải quyết biểu tượng" và "Không tìm thấy biểu tượng" đều có nghĩa giống nhau. Các trình biên dịch Java khác nhau sử dụng các cụm từ khác nhau.

1. Lỗi "Không thể tìm thấy biểu tượng" nghĩa là gì?

Thứ nhất, đó là lỗi biên dịch 1 . Nó có nghĩa có vấn đề trong mã nguồn Java của bạn hoặc có vấn đề trong cách bạn đang biên dịch nó.

Mã nguồn Java của bạn bao gồm những thứ sau:

  • Từ khóa: như true, false, class, while, và vân vân.
  • Chữ nghĩa: thích 42'X'"Hi mum!".
  • Các nhà khai thác và thẻ không tự chữ và số khác: như +, =, {, và vân vân.
  • Định danh: như Reader, i, toString, processEquibalancedElephants, và vân vân.
  • Nhận xét và khoảng trắng.

Lỗi "Không thể tìm thấy biểu tượng" là về số nhận dạng. Khi mã của bạn được biên dịch, trình biên dịch cần tìm ra ý nghĩa của mỗi và mọi định danh trong mã của bạn.

Lỗi "Không thể tìm thấy biểu tượng" có nghĩa là trình biên dịch không thể thực hiện việc này. Mã của bạn dường như đang đề cập đến điều gì đó mà trình biên dịch không hiểu.

2. Điều gì có thể gây ra lỗi "Không thể tìm thấy biểu tượng"?

Là đơn đặt hàng đầu tiên, chỉ có một nguyên nhân. Trình biên dịch đã tìm kiếm tất cả những nơi mà mã định danh cần được xác định, và nó không thể tìm thấy định nghĩa. Điều này có thể được gây ra bởi một số thứ. Những cái chung như sau:

  • Đối với số nhận dạng nói chung:

    • Có lẽ bạn đánh vần tên không chính xác; tức là StringBiulderthay vì StringBuilder. Java không thể và sẽ không cố gắng bù đắp lỗi chính tả hoặc lỗi đánh máy.
    • Có lẽ bạn đã hiểu sai trường hợp; tức là stringBuilderthay vì StringBuilder. Tất cả các mã định danh Java đều phân biệt chữ hoa chữ thường.
    • Có lẽ bạn đã sử dụng dấu gạch dưới không thích hợp; tức là mystringmy_stringkhác nhau. (Nếu bạn tuân theo các quy tắc kiểu Java, bạn sẽ được bảo vệ phần lớn khỏi sai lầm này ...)
    • Có lẽ bạn đang cố gắng sử dụng một cái gì đó đã được khai báo là "ở một nơi khác"; tức là trong một ngữ cảnh khác với nơi bạn đã ngầm yêu cầu trình biên dịch xem xét. (Một lớp khác? Một phạm vi khác? Một gói khác? Một cơ sở mã khác?)
  • Đối với các số nhận dạng nên tham chiếu đến các biến:

    • Có lẽ bạn quên khai báo biến.
    • Có lẽ khai báo biến nằm ngoài phạm vi tại thời điểm bạn đã cố gắng sử dụng nó. (Xem ví dụ bên dưới)
  • Đối với số nhận dạng phải là tên phương thức hoặc trường:

    • Có lẽ bạn đang cố gắng tham chiếu đến một phương thức hoặc trường kế thừa chưa được khai báo trong các giao diện hoặc lớp cha / tổ tiên.

    • Có lẽ bạn đang cố gắng tham chiếu đến một phương thức hoặc trường không tồn tại (tức là chưa được khai báo) trong kiểu bạn đang sử dụng; ví dụ: "someString".push()2 .

    • Có lẽ bạn đang cố gắng sử dụng một phương thức như một trường, hoặc ngược lại; ví dụ "someString".lengthhoặc someArray.length().

    • Có lẽ bạn đang nhầm lẫn khi thao tác trên một mảng hơn là phần tử mảng; ví dụ

          String strings[] = ...
          if (strings.charAt(3)) { ... }
          // maybe that should be 'strings[0].charAt(3)'
      
  • Đối với số nhận dạng phải là tên lớp:

    • Có lẽ bạn đã quên nhập lớp.

    • Có lẽ bạn đã sử dụng nhập "sao", nhưng lớp không được xác định trong bất kỳ gói nào bạn đã nhập.

    • Có lẽ bạn đã quên một newnhư trong:

          String s = String();  // should be 'new String()'
      
  • Đối với các trường hợp mà kiểu hoặc trường hợp dường như không có thành viên mà bạn mong đợi sẽ có:

    • Có lẽ bạn đã khai báo một lớp lồng nhau hoặc một tham số chung làm bóng kiểu bạn muốn sử dụng.
    • Có lẽ bạn đang phủ bóng một biến tĩnh hoặc biến thể hiện.
    • Có lẽ bạn đã nhập sai loại; ví dụ: do hoàn thành IDE hoặc tự động sửa.
    • Có lẽ bạn đang sử dụng (biên dịch ngược lại) phiên bản API sai.
    • Có lẽ bạn đã quên truyền đối tượng của mình sang một lớp con thích hợp.

Vấn đề thường là sự kết hợp của những điều trên. Ví dụ: có thể bạn đã nhập "dấu sao" java.io.*và sau đó cố gắng sử dụng Fileslớp ... mà java.niokhông phải java.io. Hoặc có thể bạn muốn viết File... đó một lớp học trong java.io.


Dưới đây là một ví dụ về cách phạm vi biến không chính xác có thể dẫn đến lỗi "Không thể tìm thấy biểu tượng":

List<String> strings = ...

for (int i = 0; i < strings.size(); i++) {
    if (strings.get(i).equalsIgnoreCase("fnord")) {
        break;
    }
}
if (i < strings.size()) {
    ...
}

Điều này sẽ đưa ra lỗi "Không thể tìm thấy biểu tượng" itrong ifcâu lệnh. Mặc dù chúng ta đã khai báo trước đó i, nhưng khai báo đó chỉ nằm trong phạm vi của forcâu lệnh và phần thân của nó. Tham chiếu đến itrong ifcâu lệnh không thể nhìn thấy phần khai báo đó i. Nó nằm ngoài phạm vi .

(Một sửa chữa thích hợp ở đây có thể là di chuyển ifcâu lệnh bên trong vòng lặp hoặc khai báo itrước khi bắt đầu vòng lặp.)


Dưới đây là một ví dụ gây ra sự khó hiểu trong đó lỗi đánh máy dẫn đến lỗi "Không thể tìm thấy biểu tượng" dường như không thể giải thích được:

for (int i = 0; i < 100; i++); {
    System.out.println("i is " + i);
}

Điều này sẽ cung cấp cho bạn một lỗi biên dịch trong printlncuộc gọi nói rằng ikhông thể tìm thấy. Nhưng (tôi nghe bạn nói) Tôi đã khai báo!

Vấn đề là dấu chấm phẩy lén lút ( ;) trước {. Cú pháp ngôn ngữ Java định nghĩa dấu chấm phẩy trong ngữ cảnh đó là một câu lệnh trống . Sau đó câu lệnh rỗng trở thành phần thân của forvòng lặp. Vì vậy, mã đó thực sự có nghĩa là:

for (int i = 0; i < 100; i++); 

// The previous and following are separate statements!!

{
    System.out.println("i is " + i);
}

Các { ... }khối KHÔNG phải là cơ thể của forvòng lặp, và do đó việc khai báo trước đó của itrong fortuyên bố là ra khỏi phạm vi trong khối.


Đây là một ví dụ khác về lỗi "Không thể tìm thấy biểu tượng" do lỗi đánh máy.

int tmp = ...
int res = tmp(a + b);

Mặc dù đã khai báo trước, tmpnhưng tmp(...)biểu thức trong biểu thức là sai. Trình biên dịch sẽ tìm kiếm một phương thức được gọi tmpvà sẽ không tìm thấy một phương thức. Đã khai báo trước đó tmpnằm trong vùng tên cho các biến, không phải vùng tên cho các phương thức.

Trong ví dụ mà tôi đã xem qua, lập trình viên đã thực sự bỏ qua một toán tử. Ý anh ấy muốn viết là:

int res = tmp * (a + b);

Có một lý do khác khiến trình biên dịch có thể không tìm thấy ký hiệu nếu bạn đang biên dịch từ dòng lệnh. Đơn giản là bạn có thể đã quên biên dịch hoặc biên dịch lại một số lớp khác. Ví dụ, nếu bạn có các lớp học FooBarnơi Foosử dụng Bar. Nếu bạn chưa bao giờ biên dịch Barvà bạn chạy javac Foo.java, bạn có trách nhiệm nhận thấy rằng trình biên dịch không thể tìm thấy ký hiệu Bar. Câu trả lời đơn giản là biên dịch FooBarcùng nhau; ví dụ javac Foo.java Bar.javahoặc javac *.java. Hoặc tốt hơn là vẫn sử dụng một công cụ xây dựng Java; ví dụ như Ant, Maven, Gradle, v.v.

Có một số nguyên nhân khác khó hiểu hơn ... mà tôi sẽ giải quyết bên dưới.

3. Làm cách nào để khắc phục những lỗi này?

Nói chung, bạn bắt đầu bằng cách tìm ra nguyên nhân gây ra lỗi biên dịch.

  • Nhìn vào dòng trong tệp được chỉ ra bởi thông báo lỗi biên dịch.
  • Xác định ký hiệu mà thông báo lỗi đang nói đến.
  • Tìm hiểu lý do tại sao trình biên dịch nói rằng nó không thể tìm thấy ký hiệu; xem ở trên!

Sau đó, bạn nghĩ về những gì mã của bạn phải nói. Sau đó, cuối cùng bạn tìm ra những gì bạn cần chỉnh sửa đối với mã nguồn của mình để làm những gì bạn muốn.

Lưu ý rằng không phải mọi "sửa sai" đều đúng. Xem xét điều này:

for (int i = 1; i < 10; i++) {
    for (j = 1; j < 10; j++) {
        ...
    }
}

Giả sử rằng trình biên dịch nói "Không thể tìm thấy biểu tượng" cho j. Có nhiều cách tôi có thể "khắc phục" điều đó:

  • Tôi có thể thay đổi bên trong forthành for (int j = 1; j < 10; j++)- có lẽ chính xác.
  • Tôi có thể thêm một khai báo cho j trướcfor vòng lặp bên trong hoặc forvòng lặp bên ngoài - có thể đúng.
  • Tôi có thể thay đổi jthành itrong forvòng lặp bên trong - có thể sai!
  • và như thế.

Vấn đề là bạn cần hiểu mã của bạn đang cố gắng làm gì để tìm ra bản sửa lỗi phù hợp.

4. Nguyên nhân ít người biết đến

Dưới đây là một số trường hợp "Không thể tìm thấy biểu tượng" dường như không thể giải thích được ... cho đến khi bạn nhìn kỹ hơn.

  1. Phần phụ thuộc không chính xác : Nếu bạn đang sử dụng IDE hoặc một công cụ xây dựng quản lý đường dẫn xây dựng và các phần phụ thuộc của dự án, bạn có thể đã mắc lỗi với phần phụ thuộc; Ví dụ: bỏ sót một phụ thuộc hoặc chọn phiên bản sai. Nếu bạn đang sử dụng một công cụ xây dựng (Ant, Maven, Gradle, v.v.), hãy kiểm tra tệp xây dựng của dự án. Nếu bạn đang sử dụng IDE, hãy kiểm tra cấu hình đường dẫn xây dựng của dự án.

  2. Bạn không biên dịch lại : Đôi khi xảy ra trường hợp các lập trình viên Java mới không hiểu cách hoạt động của chuỗi công cụ Java hoặc chưa thực hiện một "quy trình xây dựng" có thể lặp lại; ví dụ: sử dụng IDE, Ant, Maven, Gradle, v.v. Trong tình huống như vậy, lập trình viên có thể đuổi theo đuôi của mình để tìm kiếm một lỗi ảo thực sự gây ra do không biên dịch lại mã đúng cách, và tương tự như vậy ...

  3. Sự cố bản dựng trước đó : Có thể bản dựng trước đó không thành công theo cách tạo tệp JAR bị thiếu lớp. Một lỗi như vậy thường sẽ được nhận thấy nếu bạn đang sử dụng một công cụ xây dựng. Tuy nhiên, nếu bạn nhận tệp JAR từ người khác, bạn đang phụ thuộc vào việc họ xây dựng đúng cách và nhận thấy lỗi. Nếu bạn nghi ngờ điều này, hãy sử dụng tar -tvfđể liệt kê nội dung của tệp JAR đáng ngờ.

  4. Các vấn đề về IDE : Mọi người đã báo cáo các trường hợp IDE của họ bị nhầm lẫn và trình biên dịch trong IDE không thể tìm thấy một lớp tồn tại ... hoặc tình huống ngược lại.

  • Điều này có thể xảy ra nếu IDE đã được định cấu hình với phiên bản JDK sai.

  • Điều này có thể xảy ra nếu bộ nhớ đệm của IDE không đồng bộ với hệ thống tệp. Có những cách cụ thể của IDE để khắc phục điều đó.

  • Đây có thể là một lỗi IDE. Ví dụ, @Joel Costigliola mô tả một tình huống trong đó Eclipse không xử lý cây "thử nghiệm" Maven một cách chính xác: hãy xem câu trả lời này .

  1. Các vấn đề về Android : Khi bạn đang lập trình cho Android và bạn gặp phải lỗi "Không thể tìm thấy biểu tượng" liên quan đến R, hãy lưu ý rằng các Rbiểu tượng được xác định bởi context.xmltệp. Kiểm tra xem context.xmltệp của bạn có đúng và ở đúng vị trí hay không, và Rtệp lớp tương ứng đã được tạo / biên dịch chưa. Lưu ý rằng các ký hiệu Java có phân biệt chữ hoa chữ thường, vì vậy các id XML tương ứng cũng phân biệt chữ hoa chữ thường.

    Các lỗi biểu tượng khác trên Android có thể là do các lý do đã đề cập trước đó; ví dụ như phụ thuộc bị thiếu hoặc không chính xác, tên gói không chính xác, phương thức hoặc trường không tồn tại trong một phiên bản API cụ thể, lỗi chính tả / đánh máy, v.v.

  2. Định nghĩa lại các lớp hệ thống : Tôi đã thấy các trường hợp trình biên dịch phàn nàn rằng đó substringlà một ký hiệu không xác định trong một cái gì đó như sau

    String s = ...
    String s1 = s.substring(1);
    

    Hóa ra lập trình viên đã tạo phiên bản của riêng họ Stringvà phiên bản lớp của anh ta không định nghĩa substringphương thức.

    Bài học: Đừng định nghĩa các lớp của riêng bạn có cùng tên với các lớp thư viện thông thường!

  3. Homoglyphs: Nếu bạn sử dụng mã hóa UTF-8 cho các tệp nguồn của mình, có thể có các số nhận dạng trông giống nhau, nhưng thực tế là khác nhau vì chúng chứa các ký tự đồng nhất. Xem trang này để biết thêm thông tin.

    Bạn có thể tránh điều này bằng cách tự giới hạn ASCII hoặc Latin-1 làm mã hóa tệp nguồn và sử dụng Java \uxxxxthoát cho các ký tự khác.


1 - Nếu tình cờ, bạn làm thấy điều này trong một ngoại lệ thời gian chạy hoặc thông báo lỗi, sau đó hoặc là bạn đã cấu hình IDE của bạn để mã chạy với lỗi biên dịch, hoặc ứng dụng của bạn được tạo ra và biên dịch mã .. khi chạy.

2 - Ba nguyên tắc cơ bản của Kỹ thuật xây dựng: nước không chảy lên dốc, một tấm ván nằm nghiêng mạnh hơn và bạn không thể đẩy lên một sợi dây .

26
thinkterry 2015-04-17 22:50.

Bạn cũng sẽ gặp lỗi này nếu bạn quên new:

String s = String();

đấu với

String s = new String();

bởi vì lệnh gọi không có newtừ khóa sẽ thử và tìm một phương thức (cục bộ) được gọi Stringmà không có đối số - và chữ ký phương thức đó có thể không được xác định.

14
Jan 2015-12-06 23:19.

Thêm một ví dụ về 'Biến nằm ngoài phạm vi'

Như tôi đã thấy những câu hỏi kiểu đó một vài lần rồi, có thể thêm một ví dụ nữa cho những gì bất hợp pháp ngay cả khi nó có thể cảm thấy ổn.

Hãy xem xét mã này:

if(somethingIsTrue()) {
  String message = "Everything is fine";
} else {
  String message = "We have an error";
}
System.out.println(message);

Đó là mã không hợp lệ. Bởi vì cả hai biến được đặt tên messageđều không hiển thị bên ngoài phạm vi tương ứng của chúng - {}trong trường hợp này sẽ là dấu ngoặc bao quanh .

Bạn có thể nói: "Nhưng một thông báo có tên biến được xác định theo cả hai cách - vì vậy thông báo được xác định sau if".

Nhưng bạn đã nhầm.

Java không có free()hoặc không có deletetoán tử, vì vậy nó phải dựa vào phạm vi theo dõi biến để tìm ra khi nào các biến không còn được sử dụng nữa (cùng với các tham chiếu đến các biến nguyên nhân này).

Đặc biệt tồi tệ nếu bạn nghĩ rằng bạn đã làm điều gì đó tốt. Tôi đã gặp loại lỗi này sau khi "tối ưu hóa" mã như thế này:

if(somethingIsTrue()) {
  String message = "Everything is fine";
  System.out.println(message);
} else {
  String message = "We have an error";
  System.out.println(message);
}

"Ồ, có mã trùng lặp, hãy kéo dòng chung đó ra" -> và nó ở đó.

Cách phổ biến nhất để giải quyết loại rắc rối phạm vi này là gán trước các giá trị khác cho các tên biến trong phạm vi bên ngoài và sau đó gán lại trong nếu:

String message = "We have an error";
if(somethingIsTrue()) {
  message = "Everything is fine";
} 
System.out.println(message);
10
Joel Costigliola 2016-05-14 00:09.

Một cách để gặp lỗi này trong Eclipse:

  1. Xác định một lớp Atrong src/test/java.
  2. Định nghĩa một lớp khác Btrong lớp src/main/javađó sử dụng A.

Kết quả: Eclipse sẽ biên dịch mã, nhưng maven sẽ cho "Không thể tìm thấy biểu tượng".

Nguyên nhân cơ bản: Eclipse đang sử dụng một đường dẫn xây dựng kết hợp cho cây chính và cây thử nghiệm. Thật không may, nó không hỗ trợ sử dụng các đường dẫn xây dựng khác nhau cho các phần khác nhau của dự án Eclipse, đó là điều mà Maven yêu cầu.

Giải pháp :

  1. Đừng xác định sự phụ thuộc của bạn theo cách đó; tức là không mắc lỗi này.
  2. Thường xuyên xây dựng cơ sở mã của bạn bằng Maven để sớm nhận ra sai lầm này. Một cách để làm điều đó là sử dụng máy chủ CI.
5
GT_hash 2018-07-01 01:09.

"Không thể tìm thấy" có nghĩa là, trình biên dịch không thể tìm thấy biến, phương thức, lớp thích hợp, v.v. nếu bạn gặp lỗi đó, trước hết bạn muốn tìm dòng mã nơi gặp lỗi. Và sau đó bạn sẽ có thể tìm thấy biến, phương thức hoặc lớp nào chưa định nghĩa trước khi sử dụng nó. Sau khi xác nhận khởi tạo biến đó, phương thức hoặc lớp có thể được sử dụng cho các yêu cầu sau này ... Hãy xem xét ví dụ sau.

Tôi sẽ tạo một lớp demo và in tên ...

class demo{ 
      public static void main(String a[]){
             System.out.print(name);
      }
}

Bây giờ hãy nhìn vào kết quả ..

Lỗi đó cho biết, "tên biến không thể tìm thấy" .. Việc xác định và khởi tạo giá trị cho biến 'tên' có thể được loại bỏ lỗi đó.. Thực tế như thế này,

class demo{ 
      public static void main(String a[]){

             String name="smith";

             System.out.print(name);
      }
}

Bây giờ hãy nhìn vào đầu ra mới ...

Ok Đã giải quyết thành công lỗi đó..Đồng thời, nếu bạn có thể nhận được "không thể tìm thấy phương thức" hoặc "không thể tìm thấy lớp" nào đó, Đầu tiên, hãy xác định một lớp hoặc phương thức và sau đó sử dụng ..

3
Jonathan Lin 2016-03-08 19:58.

Nếu bạn gặp lỗi này trong bản dựng ở một nơi khác, trong khi IDE của bạn cho biết mọi thứ hoàn toàn ổn, thì hãy kiểm tra xem bạn có đang sử dụng các phiên bản Java giống nhau ở cả hai nơi hay không.

Ví dụ: Java 7 và Java 8 có các API khác nhau, vì vậy việc gọi một API không tồn tại trong phiên bản Java cũ hơn sẽ gây ra lỗi này.

3
Ajay 2019-10-11 02:07.

GIẢI QUYẾT

Sử dụng IntelliJ

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

2
Divya Jose 2016-09-29 04:59.

Tôi cũng nhận được lỗi này. (mà tôi đã truy cập vào Google và tôi đã được dẫn đến trang này)

Sự cố: Tôi đang gọi một phương thức tĩnh được định nghĩa trong lớp của một dự án A từ một lớp được xác định trong một dự án khác B. Tôi gặp lỗi sau:

error: cannot find symbol

Giải pháp: Tôi đã giải quyết vấn đề này bằng cách đầu tiên xây dựng dự án nơi phương thức được xác định, sau đó là dự án nơi phương thức được gọi từ đó.

2
UdayKiran Pulipati 2019-01-25 01:18.

Nếu đường dẫn xây dựng Eclipse Java được ánh xạ đến 7, 8 và trong thuộc tính Maven Project pom.xml java.version được đề cập là phiên bản Java cao hơn (9,10,11, v.v.,) hơn 7,8 thì bạn cần cập nhật trong pom. tệp xml.

Trong Eclipse nếu Java được ánh xạ tới Java phiên bản 11 và trong pom.xml, nó được ánh xạ tới phiên bản Java 8. Cập nhật hỗ trợ Eclipse lên Java 11 bằng cách thực hiện các bước dưới đây trong Trợ giúp IDE của nhật thực -> Cài đặt Phần mềm Mới ->

Dán liên kết sau http://download.eclipse.org/eclipse/updates/4.9-P-builds at Work With

hoặc là

Thêm (Cửa sổ bật lên sẽ mở ra) ->

Name:Hỗ trợ Java 11 Location: http://download.eclipse.org/eclipse/updates/4.9-P-builds

sau đó cập nhật phiên bản Java trong thuộc tính Maven của tệp pom.xml như bên dưới

<java.version>11</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>

Cuối cùng nhấp chuột phải vào dự án Debug as -> Maven clean, các bước xây dựng Maven

1
avp 2018-08-18 15:45.

Có thể có nhiều kịch bản khác nhau như mọi người đã đề cập ở trên. Một vài điều đã giúp tôi giải quyết điều này.

  1. Nếu bạn đang sử dụng IntelliJ

    File -> 'Invalidate Caches/Restart'

HOẶC LÀ

  1. Lớp đang được tham chiếu nằm trong một dự án khác và phần phụ thuộc đó không được thêm vào tệp xây dựng Gradle của dự án của tôi. Vì vậy, tôi đã thêm phần phụ thuộc bằng cách sử dụng

    compile project(':anotherProject')

va no đa hoạt động. HTH!

1
ANIL KUMAR 2019-08-07 18:59.

bạn đã biên dịch mã của mình bằng trình biên dịch maven và sau đó sử dụng kiểm tra maven để chạy nó hoạt động tốt. Bây giờ nếu bạn thay đổi một cái gì đó trong mã của mình và sau đó không biên dịch mà bạn đang chạy nó, bạn sẽ gặp lỗi này.

Giải pháp: Một lần nữa biên dịch nó và sau đó chạy thử nghiệm. Đối với tôi, nó hoạt động theo cách này.

1
VIPIN KUMAR 2019-09-08 21:50.

Trong trường hợp của tôi - tôi phải thực hiện các thao tác dưới đây:

  1. Di chuyển context.xmltập tin từ src/java/packageđến resourcethư mục (IntelliJ IDE)
  2. Thư mục sạch target.
0
Striker 2017-09-07 02:47.

Để biết gợi ý, hãy xem kỹ tên lớp có lỗi và số dòng, ví dụ: Lỗi biên dịch [ERROR] \ Applications \ xxxxx.java: [44,30] error: không thể tìm thấy ký hiệu

Một nguyên nhân khác là phương pháp không được hỗ trợ của phiên bản java nói jdk7 vs 8. Kiểm tra% JAVA_HOME% của bạn

0
sakra 2020-07-21 02:31.

Chúng tôi đã gặp lỗi trong một dự án Java được thiết lập như một bản dựng nhiều dự án Gradle. Hóa ra là một trong những dự án con bị thiếu plugin Thư viện Java Gradle . Điều này ngăn không cho các tệp lớp của dự án con hiển thị với các dự án khác trong bản dựng.

Sau khi thêm plugin thư viện Java vào dự án build.gradlecon theo cách sau, lỗi đã biến mất:

plugins {
    ...
    id 'java-library'
}
0
Felipe Franco 2020-11-20 11:03.

Tôi đã giải quyết lỗi này như thế này ... Sự điên rồ của android. Tôi có tên gói là Bộ điều hợp và tôi đã cấu trúc lại tên cho bộ điều hợp bằng "a" thay vì "A" và đã giải quyết được lỗi.

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Trong Saturday Night Live, The Bachelor is Bland và Tina Fey trở lại với vai 'Crazy' Sarah Palin

Trong Saturday Night Live, The Bachelor is Bland và Tina Fey trở lại với vai 'Crazy' Sarah Palin

Sau khi Sarah Palin tán thành Donald Trump vào đầu tuần này, gần như không thể tránh khỏi việc Tina Fey sẽ trở lại Saturday Night Live để thăm lại ấn tượng Palin cổ điển của cô. Và Fey chắc chắn đã không làm thất vọng, cô ấy đã đưa ra một lời khen ngợi không hề nhẹ về bài phát biểu chứng thực Iowa quanh co và khó hiểu của Palin trong khi Trump của Darrell Hammond đưa ra bình luận xuyên suốt.

Đây có phải là sự khởi đầu cho sự kết thúc của việc giam giữ Brittney Griner?

Đây có phải là sự khởi đầu cho sự kết thúc của việc giam giữ Brittney Griner?

Brittney Griner (r.) Ngay từ đầu, thân phận của Brittney Griner đã là tình huống con tin Mỹ độc nhất trong lịch sử hiện đại.

Tom Brady là bộ tứ vệ đầu tiên cuối cùng có thể giúp Julio Jones có hơn 10 lần chạm bóng trong một mùa giải

Tom Brady là bộ tứ vệ đầu tiên cuối cùng có thể giúp Julio Jones có hơn 10 lần chạm bóng trong một mùa giải

Chúng ta có thể thấy nhiều hơn nữa về một Julio Jones khỏe mạnh trong khu vực cuối năm nay. John Parker Wilson, Greg McElroy, A.

Đó phải là Đức

Đó phải là Đức

Đối với đội tuyển Anh, không có kẻ thủ ác nào lớn hơn Hầu hết các cổ động viên Anh, nếu không muốn nói là tất cả, hẳn sẽ phải gật gù khi tiếng còi mãn cuộc của trận bán kết lượt về W Euro 2022 vang lên. Bởi vì nó báo hiệu rằng Đức sẽ chờ đợi ở Wembley trong trận chung kết với Anh và là điều duy nhất giữa Anh và chiếc cúp lớn đầu tiên của đội tuyển nữ.

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Thanh thiếu niên, Gia đình Florida Hội đồng quản trị trường học về Luật 'Không nói đồng tính': 'Buộc chúng tôi tự kiểm duyệt'

Vụ kiện, nêu tên một số học khu, lập luận rằng dự luật "Không nói đồng tính" được ban hành gần đây của Florida "có hiệu quả im lặng và xóa bỏ học sinh và gia đình LGBTQ +"

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Khi bạn không thể trở thành người mà Internet muốn bạn trở thành

Tôi ghét từ "tàu đắm". Mọi người cảm thấy thoải mái trong la bàn đạo đức của riêng mình, và khi làm như vậy, họ thấy mình vượt qua sự phán xét.

Language