Java错误“未使用局部变量的值”

时间:2012-06-16 11:15:30

标签: java

我是java的新手(2天前开始学习)。对不起,如果这是一个愚蠢的问题。我正在努力学习如何使用rt.exec&类似的方法所以我试图制作一个运行calc.exe的非常简单的程序。这是代码:

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

我收到错误“未使用局部变量p的值”。

如果我尝试编译这就是我得到的:

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

我觉得这很容易修复,但我不知道怎么做。如果有人帮忙会很好。

7 个答案:

答案 0 :(得分:12)

好吧,错误“未使用局部变量p的值。”,实际上并不是错误。它是您的IDE(Eclipse),警告您实际上没有读取该变量,因此您没有收到任何输入。

你班级的另一个问题是,你没有主要的方法。像这样,

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*/
}
    }
}

顺便说一下,你应该总是用一个带有大写字母的类名开头。因此public class main应该是public class Main

答案 1 :(得分:1)

您收到该错误是因为您没有用于启动java程序的main方法:

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
   }
}

答案 2 :(得分:1)

我相信你拥有的不是错误而是警告; eclipse(以及其他IDE /编译器)会告诉您,虽然您为变量p赋值,但您没有在任何地方使用它。它告诉你这个,因为这有时是一个错误;主要是在为变量赋值时,稍后会以某种方式使用该变量。

您可以通过将该特定语句更改为

来消除错误
rt.exec("calc.exe")

因为您不需要从对exec的调用中分配值。

答案 3 :(得分:0)

错误“未使用局部变量p的值”,因为代码中没有任何地方,您不使用变量p。

要删除错误 - 必须删除变量“p”。

要运行计算器,您必须使用以下代码:

public class MainClass {

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

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

    }

}

此翻译由Google翻译所有其他评论

答案 4 :(得分:0)

没有愚蠢的问题(在最坏的情况下,只有错位的)。

“编辑器不包含主类型”是指您尚未定义主方法的事实。所有java程序都需要一个main方法,如下所示:

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

这是您必须放置代码的地方。

“未使用的价值”只是一个警告;它告诉你,你的变量p只存在于try-block中。您可以在尝试之前声明您的p变量 - 这样,您可以在try-scope之外使用它(变量的范围指的是它存在的位置,在这种情况下,仅在try-block内)。

如果你想使用你的p,这就是你所追求的:

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*/}
    }
}

[编辑]:请注意,对于类的第一个字母使用大写字母,例如java编码约定的一部分,例如Main.java(不是main.java)

答案 5 :(得分:0)

变量的使用在这里没有问题。出现该错误是因为JVM需要一个带签名的方法来知道从哪里开始执行。

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

在您的班级中引入一个带有此签名的方法,它将清除该错误。 或者,您可以将代码嵌入到静态块中,如下所示 - 但不建议使用此方法。

static {
    // TODO: Your code here
}

答案 6 :(得分:0)

你没有使用main如何编译请使用main方法。 第二个是在你的方法中使用p局部变量。另外一个方法是声明p变量的方法开始。