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

Java错误“;“未使用局部变量的值”;,java,Java,我对java真的很陌生(两天前开始学习)。对不起,如果这是一个愚蠢的问题。我正在尝试学习如何使用rt.exec&类似的方法,所以我尝试制作一个运行calc.exe的非常简单的程序。代码如下: public class main { { try { Runtime rt = Runtime.getRuntime() ; Process p = rt.exec("calc.exe") ; } catch(Exception exc){/*handle exception*/} } }

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

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

catch(Exception exc){/*handle exception*/}
    }
}
public class MainClass {

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

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

    }

}

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

如果我尝试编译,我会得到:


我认为这很容易修复,但我不知道如何修复。如果有人帮忙,那就太好了。

你会出现这个错误,因为你没有启动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
   }
}

我相信你所犯的不是错误,而是警告;eclipse(和其他IDE/编译器)将告诉您,尽管您为变量p分配了一个值,但在任何地方都没有使用它。它告诉你这一点,因为这有时是一个错误;大多数情况下,当您为变量赋值时,您以后会以某种方式使用该变量

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

rt.exec("calc.exe")
由于不需要从调用exec中指定值。

那么,“未使用局部变量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

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

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

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

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

catch(Exception exc){/*handle exception*/}
    }
}
public class MainClass {

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

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

    }

}

这条评论和谷歌翻译的所有其他评论都不存在愚蠢的问题(在最坏的情况下,只有放错地方的问题)

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

public static void main(String [] args){
    <code>
}
这是您必须放置代码的地方

“未使用值”只是一个警告;它告诉您变量p只存在于try块中。您可以在try之前声明p变量-这样,您就可以在try范围之外使用它(变量的范围是指它存在的位置,在本例中,仅在try块内部)

如果你想使用你的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)

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

public static void main( String args[] ){ //TODO: Stuff here } 
在类中引入一个具有此签名的方法,它将清除该错误。 或者,您可以将代码嵌入静态块中,如下所示-但不推荐使用此方法

static {
    // TODO: Your code here
}

您没有使用main,如何编译请使用main方法。
第二种方法是在方法中使用p局部变量。另一种方法是从方法开始声明p变量。

您需要一个方法
publicstaticvoidmain(String[]argv)
(与此完全相同)。1)“未使用局部变量p的值”是编译时警告。2)
启动错误
是运行时错误,而不是编译时错误。3) “对java非常陌生”的人应该尝试比使用特定于平台的代码来创建
过程更简单的事情。这里描述了正确使用
过程的一些要求。例如,它需要一个<代码>线程<代码>来消耗<代码>进程<代码>的输出流。空白行是什么?我可能会把一个放在
main
声明之前,但其他声明相对来说毫无意义。谢谢你,也许你可以告诉我如何运行打包到.jar中的.exe?我想运行的不是windows默认计算器,而是我先前下载的计算器。这一个-@Andrew Thompson这是为了方便)因为在处理大量代码时,我共享空间逻辑块,这简化了将来对代码的读取。“也许你可以告诉如何运行打包到.jar中的.exe?”1)在Windows上运行它(除非安装了仿真器,否则只有Windows才会运行exe)2)将其解压缩到临时文件。3) 运行临时文件。-顺便说一句1)除非这个计算器计算出“生命、宇宙和一切”的含义,否则在Swing中编写代码并使用
ScriptEngine
进行计算可能会更快。它也将是跨平台的(或有可能是x平台的。)2)您在原始问题中提出了两个问题,这两个问题都已得到回答。现在是第三个问题……是时候选择一个答案,那个答案,然后问一个新的、不同的问题了。