2017-11-30 3 views
1

Ich habe eine Java-Klasse, die, wenn wir ausführen, eine Batch-Datei ausgeführt wird. Ich habe eine Variable isSuccessful (boolean), die entweder true oder false anzeigt, ob die Batchdatei ihren Befehl richtig oder falsch ausgeführt hat. Jetzt wird die wahre oder falsche Ausgabe nur in der Konsole angezeigt. Ich will es auf dem Web-Browser angezeigt werden, wenn ich in einer URL (zB localhost:8080/runbatchfile)Zeige Java-Ausgabe im Browser

Bisher habe ich diese Codes:

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(); 
    } 
    } 
} 

Batch-Datei. 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; 
    } 
} 

Diese BatchFile.Java Klasse gibt mir th Fehler:

java.lang.Exception: Test class should have exactly one public zero-argument constructor at org.junit.runners.BlockJUnit4ClassRunner.validateZeroArgConstructor(BlockJUnit4ClassRunner.java:171) at org.junit.runners.BlockJUnit4ClassRunner.validateConstructor(BlockJUnit4ClassRunner.java:148) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:127) at org.junit.runners.ParentRunner.validate(ParentRunner.java:416) at org.junit.runners.ParentRunner.(ParentRunner.java:84) at org.junit.runners.BlockJUnit4ClassRunner.(BlockJUnit4ClassRunner.java:65) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.(SpringJUnit4ClassRunner.java:138) at org.springframework.test.context.junit4.SpringRunner.(SpringRunner.java:49) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at 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); 
    } 
} 

Ich bin neu in diesem. Ich habe versucht, was ich kann. Bitte helfen Sie mir, meine Codes zu korrigieren. Ich danke dir sehr.

+0

Können Sie bitte die Ausnahme einfügen, die Sie erhalten? – Waqas

+0

@Waqas Hallo, fertig –

+0

Wie rufst du deine "contextLoads()" Methode an? Ich sehe nicht, dass es aus der "BatchFile" -Klasse aufgerufen wird – tdaxr

Antwort

1

Erstellen Sie einen neuen Konstruktor in BatchFile, der die Methode contextLoads aufrufen wird. Und rufen Sie Ihre BatchFileController Klasse stattdessen diesen neuen Konstruktor auf.

Ich würde auch vorschlagen, alle Anmerkungen zu entfernen, die Sie von RunBatchFile haben, da diese für Junits sind, und deshalb erhalten Sie die Ausnahme.

+0

Das ist, was ich will: 'Erstellen Sie einen neuen Konstruktor in BatchFile, die die Methode ContextLoads aufrufen wird, aber ich bin mir nicht sicher, wie es geht. Kannst du mich bitte etwas mehr darin führen? –