Это мой первый вопрос здесь, поэтому я надеюсь быть ясным. Я разрабатываю простое приложение JavaFX, единственное, что ему нужно сделать - это показать веб-интерфейс пользователя. Кажется, что все будет в порядке, я экспортировал Runnable JAR файл из Eclipse, и я испытал его на окно 10 и 7, но когда я поставил банку на Window XP OS, у меня есть следующие:Java WebView генерирует исключение в Windows XP
Exception in Application start method Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa der.java:58) Caused by: java.lang.RuntimeException: Exception in Application start method at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherIm pl.java:917) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155( LauncherImpl.java:182) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.UnsatisfiedLinkError: Invalid URL for class: rsrc:com/sun/g lass/utils/NativeLibLoader.class at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoad er.java:162) at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoad er.java:94) at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java: 39) at com.sun.webkit.WebPage.lambda$static$39(WebPage.java:130) at java.security.AccessController.doPrivileged(Native Method) at com.sun.webkit.WebPage.<clinit>(WebPage.java:129) at javafx.scene.web.WebEngine.<init>(WebEngine.java:879) at javafx.scene.web.WebEngine.<init>(WebEngine.java:866) at javafx.scene.web.WebView.<init>(WebView.java:273) at application.Main.start(Main.java:30) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162 (LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(Platfor mImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl. java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformI mpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatch er.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.ja va:191) ... 1 more
Вот мой код:
package application;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.util.Callback;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebEvent;
import javafx.scene.web.WebView;
public class Main extends Application {
@Override
public void start(Stage stage)
{
stage.setMinWidth(800);
stage.setMinHeight(600);
stage.setMaximized(true);
Scene scene = new Scene(new Group());
WebView browser = new WebView();
WebEngine we = browser.getEngine();
//setting personalized context menu
browser.setContextMenuEnabled(false);
//createContextMenu(browser);
//preventing bug when maximmizing
stage.maximizedProperty().addListener(new ChangeListener<Boolean>()
{
@Override
public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1)
{
System.out.println("maximized:" + t1.booleanValue());
}
});
//intercepting javascript alert
browser.getEngine().setOnAlert(new EventHandler<WebEvent<String>>()
{
@Override
public void handle(WebEvent<String> e)
{
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("MyApp");
alert.setHeaderText(null);
alert.setContentText(e.getData());
alert.showAndWait();
System.out.println("JS alert() message: " + e.getData());
}
});
//intercepting javascript confirm
browser.getEngine().setConfirmHandler(new Callback<String, Boolean>()
{
@Override
public Boolean call(String s)
{
Boolean ret;
ButtonType ok, cancel;
ok = new ButtonType("Ok");
cancel = new ButtonType("Abort");
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle("SameLAB");
alert.setHeaderText(s);
alert.setContentText(null);
alert.getButtonTypes().setAll(ok, cancel);
alert.showAndWait();
if(alert.getResult() == ok)
ret = true;
else
ret = false;
return ret;
}
});
ScrollPane sp = new ScrollPane();
sp.setFitToWidth(true);
sp.setFitToHeight(true);
sp.setContent(browser);
//loading and showing content
we.load("https://www.google.it/");
scene.setRoot(sp);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args)
{
launch(args);
}
}
Надежда, что кто-то кал помочь мне, спасибо!
, которая установлена версия Java в окне WinXP? –
https://community.oracle.com/thread/2283029 –
@JimGarrison на машине WinXP Я обновил Java до последней версии версии: 1.8.0_121, и, конечно же, я создал файл jar с относительной JRE (1.8.0_121 32 бит) –