我们通过shell脚本调用Eclipse RCP应用程序。如果Eclipse RCP应用程序异常退出,则ErrorLevel未正确设置,因为shell无法识别Eclipse RCP应用程序的返回代码。
有关如何通过Eclipse RCP应用程序设置%ErroLevel%的任何想法吗?
答案 0 :(得分:2)
这应该很简单:只需添加System.exit(<your error code>);
批处理文件示例:
java -classpath "%~dp0dist\StackOverflow3.jar" retvalue.RetValue
echo batch layer: %ErrorLevel%
pause
示例java源:
package retvalue;
public class RetValue {
public static void main(String[] args) {
System.out.println("returning with 5");
System.exit(5);
}
}
控制台输出:
C:\daten\chris\source\netbeans\StackOverflow3>java -classpath "C:\daten\chris\source\netbeans\StackOverflow3\dist\StackOverflow3.jar" retvalue.RetValue
returning with 5
C:\daten\chris\source\netbeans\StackOverflow3>echo batch layer: 5
batch layer: 5
C:\daten\chris\source\netbeans\StackOverflow3>pause
Drücken Sie eine beliebige Taste . . .
答案 1 :(得分:1)
结束申请时,必须使用System.Exit(value)
进行设置。因此,一种方法是控制使程序异常完成的异常,然后使用它结束程序以返回errorlevel
所需的值。
您可以使用它返回所需的int
值。例如:
// If I had IOException, then
System.exit(3);
参考:System.exit
修改:您对该号码的问题附带%errorlevel%
值,请使用ERRORLEVEL
,例如:
if ERRORLEVEL 0 (
echo All ok
) else (
echo An error
)
请注意,ERRORLEVEL会比较%errorlevel%
的值是否等于或高于您给予的值。
我为什么这么说?我遇到了与以前相同的问题,%errorlevel%
似乎比必须时更新。我不知道原因,但我可以告诉你,如果你通过ERRORLEVEL
检查它的值,你会检查这个值是否正确。
您必须检查更高的值 之前返回,因为ERRORLEVEL
会检查该值是否相等。
答案 2 :(得分:0)