Làm cách nào để biên dịch với -Xlint: không được chọn?


83

Tôi nhận được một thông báo khi tôi biên dịch mã của mình:

Note: H:\Project2\MyGui2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Làm cách nào để biên dịch lại với -Xlint:unchecked?


1
Bạn đang biên dịch trên dòng lệnh? Nếu vậy, hãy thêm -Xlint:uncheckedvào dòng lệnh bạn đang thực thi, giống như thông báo cho biết.
101100

phụ thuộc vào cách bạn chạy mã của mình .. nó có phải từ nhật thực không? dòng lệnh?
Boaz

Bạn đã làm gì? Tôi chưa bao giờ thấy thông báo lỗi này ...
AlexR

Câu trả lời:


53

Chỉ định nó trên dòng lệnh cho javac:

javac -Xlint: bỏ chọn

Hoặc nếu bạn đang sử dụng Ant, hãy sửa đổi mục tiêu javac của bạn

  <javac ...>
    <compilerarg value="-Xlint"/>
  </javac> 

Nếu bạn đang sử dụng Maven, hãy định cấu hình điều này trong maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>

Tôi đã maven 3, mô hình 4.0 - Các <compilerArgument>đi dưới <configuration>không thuộc <compilerArguments> `' yếu tố. Tôi thật ngốc.
sẽ

Và biên dịch bên trong AOSP thì sao? Tôi nên thêm gì vào tệp Android.mk?
Dr.jacky

48

Đối với IntelliJ 13.1 , đi tới File-> Settings-> Project Settings-> Compiler-> Java Compiler, và ở phía bên phải, để Additional command line parametersnhập "-Xlint:unchecked".


Cảm ơn. Nhưng đối với Phiên bản Cộng đồng 13.1, nó nằm ở Tệp - Cài đặt - Trình biên dịch - Trình biên dịch Java và trường ở dưới cùng.
RenniePet

7
Đối với 14.0.3 trang cài đặt này đã được chuyển đến: Tệp - Cài đặt - Xây dựng, Thực thi, Triển khai - Trình biên dịch - Trình biên dịch Java.
csauve 29/09/15

1
Không có trên AndroidStudio, có các tùy chọn Trình biên dịch dường như được phân phối cho bất kỳ trình biên dịch nào , không chỉ Java. Chỉnh sửa build.gradle hoạt động.
Alex Cohn,

Trong Android Studio , bạn có thể tìm thấy các tùy chọn trình biên dịch trong Tệp -> Cài đặt dự án mới -> Cài đặt cho dự án mới . Tuy nhiên, chúng dường như không thể áp dụng cho một dự án hiện có.
JJD

26

Trong dự án gradle, bạn có thể thêm tham số biên dịch này theo cách sau:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked"
    }
}

4
Trong các phiên bản gần đây gradle loại nhiệm vụ Compileđã được đổi tên JavaCompile, vì vậy nó làtasks.withType(JavaCompile) { ... }
obecker

1
Tôi muốn nói thêm rằng điều này sẽ đi vàoallprojects { // ... }
Borzh

21

Tôi biết điều đó nghe có vẻ kỳ lạ, nhưng tôi khá chắc chắn đây là vấn đề của bạn:

Ở đâu đó trong MyGui.java bạn đang sử dụng một bộ sưu tập chung mà không chỉ định loại. Ví dụ: nếu bạn đang sử dụng ArrayList ở đâu đó, bạn đang làm điều này:

List list = new ArrayList();

Khi nào bạn nên làm điều này:

List<String> list = new ArrayList<String>();

Cảm ơn rất nhiều, điều này đã giúp tôi!
Farb

14

Có một cách khác cho gradle:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

Ví dụ, điều này sẽ không ảnh hưởng đến các bài kiểm tra.
Trilarion

2
Đối với Android Studio, điều này dường như đòi hỏi một chút cách tiếp cận khác nhau:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
Alex Cohn

3
dành cho Android Studio 2.1.3 thêm video này vào build.gradle dự án allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
Tarn

4

Đối với Android Studio, hãy thêm phần sau vào build.gradletệp cấp cao nhất của bạn trong allprojectskhối

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
}

3

Trong CMD, hãy viết:

javac -Xlint:unchecked MyGui2.java

nó sẽ hiển thị danh sách các hoạt động không được kiểm tra hoặc không an toàn.


3

Nếu bạn làm việc với một IDE như NetBeans, bạn có thể chỉ định Xlint:unchecked tùy chọn trình biên dịch trong các thuộc tính của dự án của bạn.

Chỉ cần vào cửa sổ dự án, nhấp chuột phải vào dự án và sau đó nhấp vào Properties.

Trong cửa sổ xuất hiện, hãy tìm kiếm Compilingdanh mục và trong hộp văn bản có nhãn, Additional Compiler Optionshãy đặt Xlint:uncheckedtùy chọn.

Do đó, cài đặt sẽ vẫn được đặt cho mỗi khi bạn biên dịch dự án.


2

Một cách rõ ràng hơn để chỉ định các đối số của trình biên dịch Gradle như sau:

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']

Điều này có thể ngắn hơn nhưng nó không sạch hơn . Đối với một điều, nó ghi đè các tùy chọn hiện có được đặt ở nơi khác. Đối với người khác, nó sẽ không hoạt động ảnh hưởng đến kiểm tra, như đã lưu ý trong các nhận xét bên dưới câu trả lời của tarn. Đừng làm điều này, hãy sử dụng câu trả lời của xianlinbox để thay thế.
Konrad Rudolph

1

cách khác để biên dịch bằng -Xlint: bỏ chọn qua dòng lệnh

javac abc.java -Xlint:unchecked

nó sẽ hiển thị các cảnh báo không được kiểm tra và không an toàn.


0

FYI vào các cài đặt này đã thay đổi đối với IntelliJ 15, mới và được cải tiến để chôn sâu hơn nữa!

Bây giờ là: Tệp> Cài đặt khác> Cài đặt mặc định> 'Xây dựng, Thực thi, Triển khai'> Trình biên dịch> Trình biên dịch Java

Và trong Tham số dòng lệnh bổ sung, giống như trước, hãy viết "-Xlint: chưa được kiểm tra".

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.