Я просмотрел все блоги / форумы, но не смог решить эту проблему.Простой проект, по нажатию кнопки объявить экземпляр testNG и запустить его.Это работает, когда проект запущен в затмении.Но после экспорта проекта в виде файла Jar и запуска этого файла Jar он застревает при инициализации экземпляра TestNG.
Я создал проект javafx в eclipse.
Main.java:
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
Parent root= FXMLLoader.load(getClass().getResource("home.fxml"));
primaryStage.setTitle("Hello");
primaryStage.setScene(new Scene(root, 800, 500));
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Кнопка и текстовая область в FXML.Для отладки происходящего я сопоставил System.out.print с textArea.При запуске из eclipse он печатает все как положено, но при запуске в виде jar-файла печатает только «создание», и мне приходится убивать процесс «javaw.exe» через диспетчер задач
controller.java
public class controller implements Initializable {
@FXML
private Button testBtn;
@FXML
private TextArea statusArea;
@FXML
public void buttonClicked() {
try {
System.out.println("creating");
TestNG testNG = new TestNG();
System.out.println("DONE creating");
ArrayList<String> suites = new ArrayList<>();
suites.add("testng.xml");
testNG.setTestSuites(suites);
testNG.run();
System.out.println("Running");
}catch (Exception e) {
System.out.println("EXCEPTION: "+e.getMessage());
}
}
@Override
public void initialize(URL url, ResourceBundle rb) {
OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
appendText(String.valueOf((char) b));
}
};
System.setOut(new PrintStream(out, true));
}
public void appendText(String str) {
Platform.runLater(() -> statusArea.appendText(str));
}
}
Использованные библиотеки:
testng-6.14.3: http://central.maven.org/maven2/org/testng/testng/6.14.3/testng-6.14.3.jar
jcommander-1.48: http://central.maven.org/maven2/com/beust/jcommander/1.48/jcommander-1.48.jar
Снимок экрана при запуске из затмения:
Снимок экрана при запуске в виде файла JAR