2012-06-16 33 views
8

Tôi thực sự mới với java (bắt đầu học 2 ngày trước). Xin lỗi nếu điều này là một câu hỏi ngu ngốc. Tôi đang cố gắng tìm hiểu làm thế nào để sử dụng rt.exec & phương pháp tương tự vì vậy tôi đã cố gắng để làm cho một chương trình rất đơn giản mà chạy calc.exe. Đây là mã:Lỗi Java "Giá trị của biến cục bộ không được sử dụng"

public class main { 
{ 
try { 
Runtime rt = Runtime.getRuntime() ; 
Process p = rt.exec("calc.exe") ; 
} 

catch(Exception exc){/*handle exception*/} 
    } 
} 

http://i.stack.imgur.com/KrpsT.png

tôi nhận được lỗi "Giá trị của biến p địa phương không được sử dụng".

Và nếu tôi cố gắng biên dịch này là những gì tôi nhận được:

http://i.stack.imgur.com/Ryllw.pngI

Tôi nghĩ rằng thật dễ dàng để sửa chữa nhưng tôi không biết làm thế nào. Sẽ tốt nếu ai đó giúp.

+1

Bạn cần một phương thức 'public static void main (String [] argv)' (chính xác như vậy). – Thilo

+0

1) * "giá trị của biến cục bộ p không được sử dụng" * là cảnh báo thời gian biên dịch. 2) 'Lỗi khởi chạy' là lỗi thời gian chạy thay vì lỗi thời gian biên dịch. 3) Một người nào đó * "thực sự mới với java" * nên thử những thứ dễ dàng hơn bằng cách sử dụng mã nền tảng cụ thể để tạo ra một 'Quy trình'. Có [bài viết 6 trang] này (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html) mô tả một số yêu cầu để sử dụng một 'Quy trình' chính xác. Nó sẽ, ví dụ, yêu cầu một 'Thread' để tiêu thụ các luồng đầu ra của' Process'. –

Trả lời

11

Vâng, lỗi "Giá trị của biến cục bộ p không được sử dụng.", Thực ra không phải là lỗi. Đó là IDE của bạn (Eclipse), cảnh báo bạn rằng bạn không thực sự đọc biến đó, vì vậy bạn không nhận được bất kỳ đầu vào nào từ nó.

Và vấn đề khác với lớp học của bạn là, bạn không có phương pháp chính. Như thế này,

public class main { 
public static void main(String[] args) { 
try { 
Runtime rt = Runtime.getRuntime() ; 
Process p = rt.exec("calc.exe") ; 
} catch(Exception exc){ 
/*handle exception*/ 
} 
    } 
} 

Và bằng cách này, bạn phải luôn bắt đầu tên lớp bằng một chữ cái chụp. Vì vậy, public class main, nên thực sự là public class Main

+0

Cảm ơn bạn, bây giờ nó đang hoạt động. –

1

Bạn nhận được lỗi rằng vì bạn không có main phương pháp được sử dụng để khởi động chương trình java:

public class main { 

public static void main(String[] args) { 
    try { 
     Runtime rt = Runtime.getRuntime() ; 
     Process p = rt.exec("calc.exe") ; // here, eclipse is WARINING(so you can ignore it) you that that the variable p is never used(it's just a warning) 
    } catch(Exception exc) { 
     /*handle exception*/ 
     // never do this, always put at least a System.out.println("some error here" + e); so you don't ignore a potential exception 
    } 
} 
1

Tôi tin rằng những gì bạn có không phải là một lỗi mà là một cảnh báo; eclipse (và các IDE/trình biên dịch khác) sẽ cho bạn biết rằng, mặc dù bạn gán một giá trị cho biến p, bạn đã không sử dụng nó ở bất kỳ đâu. Nó cho bạn biết điều này bởi vì điều này đôi khi là một lỗi; chủ yếu khi bạn chỉ định một giá trị cho một biến, sau đó bạn sử dụng biến đó theo một cách nào đó.

Bạn có thể loại bỏ các lỗi bằng cách thay đổi rằng tuyên bố đặc biệt để chỉ

rt.exec("calc.exe") 

kể từ khi bạn không cần phải gán một giá trị từ cuộc gọi đến exec.

0

Lỗi "Giá trị của biến cục bộ p không được sử dụng" do thực tế không ở đâu trong mã, bạn không sử dụng biến p.

Để xóa lỗi - cần xóa biến "p".

Để chạy các máy tính, bạn phải sử dụng mã:

public class MainClass { 

    public static void main(String args[]) throws IOException { 

     Runtime.getRuntime().exec("cmd /c calc.exe"); 

    } 

} 

này và tất cả các ý kiến ​​khác dịch bởi Google Translate

+0

Điều gì là với các dòng trống? Tôi có thể đặt nó trước tuyên bố 'chính', nhưng những người khác thì tương đối vô nghĩa. –

+0

Cảm ơn bạn, có lẽ bạn có thể biết cách chạy một .exe được đóng gói thành .jar? Tôi muốn chạy không phải cửa sổ máy tính mặc định, nhưng một trong những tôi đã tải về trước đó. Điều này - http://i.imgur.com/NGnqL.png –

+0

@Andrew Thompson Điều này là để thuận tiện) Vì khi làm việc với số lượng lớn mã - tôi chia sẻ các khối không gian hợp lý, giúp đơn giản hóa việc đọc mã trong Tương lai. – TorchTT

0

Không có những điều như một qiestion ngu ngốc (những người duy nhất bị thất lạc, trong trường hợp xấu nhất).

"Trình chỉnh sửa không chứa loại chính" đề cập đến thực tế là bạn chưa xác định phương pháp chính.Tất cả các chương trình java yêu cầu một phương pháp chính, như vậy:

public static void main(String [] args){ 
    <code> 
} 

Đây là nơi bạn phải đặt mã của mình.

"Giá trị không được sử dụng" chỉ là cảnh báo; nó cho bạn biết rằng biến p của bạn chỉ tồn tại trong khối try-block. Bạn có thể khai báo biến p của bạn trước khi thử - theo cách đó, bạn có thể sử dụng nó bên ngoài phạm vi thử (phạm vi của một biến đề cập đến nơi nó tồn tại, trong trường hợp này, chỉ bên trong khối thử).

Nếu bạn muốn sử dụng p của bạn, đây là những gì bạn đang sau:

public class Main { 
    public static void main(String[] args) { 
     Process p; 
     try { 
      Runtime rt = Runtime.getRuntime(); 
      p = rt.exec("calc.exe"); 
     } catch(Exception exc) {/*handle exception*/} 
    } 
} 

[EDIT]: Lưu ý rằng nó là một phần của java mã hóa ước sử dụng chữ Capital cho chữ cái đầu tiên của một lớp, ví dụ Main.java (không phải main.java)

0

Việc sử dụng biến không có vấn đề ở đây. Lỗi đó xuất hiện vì JVM cần một phương thức có chữ ký để biết bắt đầu thực thi ở đâu.

public static void main(String args[]){ //TODO: Stuff here } 

Giới thiệu phương pháp có chữ ký này trong lớp của bạn và sẽ xóa lỗi đó. Hoặc, bạn có thể nhúng mã của mình vào một khối tĩnh như sau - nhưng phương pháp này không được khuyến nghị.

static { 
    // TODO: Your code here 
} 
0

bạn không sử dụng chính cách bạn có thể biên dịch, vui lòng sử dụng phương pháp chính. Ans thứ hai là sử dụng biến địa phương p trong method.other khôn ngoan của bạn khai báo p biến bắt đầu của phương pháp.

Các vấn đề liên quan