在浏览器

时间:2017-11-30 02:24:56

标签: java batch-file

我有一个java类,当我们运行时,将执行批处理文件。我有一个变量isSuccessful(布尔值),它将显示true或false,指示批处理文件是正确还是错误地执行了命令。现在,真或假输出仅显示在控制台中。我希望当我输入网址(例如localhost:8080/runbatchfile

时,它会显示在网络浏览器上

到目前为止,我有这些代码:

RunBatchfile.java

@RunWith(SpringRunner.class)
@SpringBootTest
public class RunBatchFile {

@Test
public void RunningBatchCommand() {

    String filePath = "C:/Users/attsuap1/Desktop/test.bat";
    try {
        Process p = Runtime.getRuntime().exec(filePath);

        int exitVal = p.waitFor();

        boolean isSuccessful = true;

        if (exitVal == 0)

        {
            isSuccessful = true;
        } else {
            isSuccessful = false;
        }

        System.out.println(isSuccessful);

    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

BatchFile.java

public class BatchFile extends RunBatchFile {

private static String isSuccessful;

public BatchFile(String isSuccessful) {
    this.isSuccessful = isSuccessful;
}

public static Object getIsSuccessful() {
    System.out.println(isSuccessful);
    return isSuccessful;
  }
}

这个BatchFile.Java类给了我这个错误:

  

java.lang.Exception:测试类应该只有一个public   零参数构造函数   org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:171)     在   org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:148)     在   org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:127)     在org.junit.runners.ParentRunner.validate(ParentRunner.java:416)at   org.junit.runners.ParentRunner。(ParentRunner.java:84)at   org.junit.runners.BlockJUnit4ClassRunner。(BlockJUnit4ClassRunner.java:65)     在   org.springframework.test.context.junit4.SpringJUnit4ClassRunner。(SpringJUnit4ClassRunner.java:138)     在   org.springframework.test.context.junit4.SpringRunner。(SpringRunner.java:49)     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native   方法)at   sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown   来自java.lang.reflect.Constructor.newInstance(未知来源)     在   org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)     在   org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)     在   org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)     在   org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)     在   org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)     在   org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)     在   org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)     在   org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)     在   org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)     在   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

BatchFileController.java

@RestController
public class BatchFileController {

private static final String template = "Result, %s";
private static String getIsSuccessful;

@RequestMapping("/runbatchfile")
@ResponseBody
public BatchFile batchFile(@RequestParam(value = "result") String result) {
    return new BatchFile(String.format(template, result));
  }
}

Application.java

@SpringBootApplication
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

我是新手。我尽我所能。有人请帮我纠正我的代码。非常感谢你。

1 个答案:

答案 0 :(得分:1)

BatchFile中创建一个新的构造函数,它将调用方法contextLoads。让你的BatchFileController类调用这个新的构造函数。

我还建议您删除RunBatchFile中的所有注释,因为这些注释适用于Junits,这就是您获得例外的原因。