ZipException:在java-9中找不到zip END头

时间:2018-01-23 12:40:08

标签: java spring javafx java-9 javafx-9

util.zip.ZipException:找不到zip END标题
尝试在java-9中加载javafx fxml视图时出现异常。

详情
我的应用程序是 Javafx (使用 fxml视图),它是使用java-8(jdk-8 64位)构建和编译的,并使用jre-9作为WebStart访问(64位)。
在这个javafx应用程序中加载和呈现网页(xhtml)。

另请注意
已经报告了两个类似的错误(即JDK-8170276,JDK-8172872)和
这两个错误提到这个问题不能用最新的java-9再现 但只能使用早期的java-9 ea构建版本重现。

但就我而言,我使用最新的 java-9(9.0.4版本)
它总是可以重复的。

问题
当我尝试在登录后加载fxml弹出窗口时,获取以下异常。

java.util.zip.ZipException: zip END header not found
at java.base/java.util.zip.ZipFile$Source.zerror(Unknown Source)
at java.base/java.util.zip.ZipFile$Source.findEND(Unknown Source)
at java.base/java.util.zip.ZipFile$Source.initCEN(Unknown Source)
at java.base/java.util.zip.ZipFile$Source.<init>(Unknown Source)
at java.base/java.util.zip.ZipFile$Source.get(Unknown Source)
at java.base/java.util.zip.ZipFile.<init>(Unknown Source)
at java.base/java.util.zip.ZipFile.<init>(Unknown Source)
at java.base/java.util.jar.JarFile.<init>(Unknown Source)
at java.base/sun.net.www.protocol.jar.URLJarFile.<init>(Unknown Source)
at java.base/sun.net.www.protocol.jar.URLJarFile.<init>(Unknown Source)
at java.base/sun.net.www.protocol.jar.URLJarFile$1.run(Unknown Source)
at java.base/sun.net.www.protocol.jar.URLJarFile$1.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
at java.base/sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
at java.base/sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
at java.base/sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
at jdk.deploy@9.0.1/com.sun.deploy.net.protocol.jar.DeployURLConnection.connect(Unknown Source)
at jdk.deploy@9.0.1/com.sun.deploy.net.protocol.jar.DeployURLConnection.getInputStream(Unknown Source)
at java.base/java.net.URL.openStream(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.load(Unknown Source)
at client.FxmlWrapper.initialize(FxmlWrapper.java:57)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Suppressed: java.nio.file.NoSuchFileException: C:\Users\user\AppData\Local\Temp\jar_cache8046747560626483610.tmp
    at java.base/sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
    at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
    at java.base/sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
    at java.base/sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
    at java.base/java.nio.file.Files.delete(Unknown Source)
    ... 22 common frames omitted

请求是否有人可以帮助解决这个问题,不胜感激 非常感谢。

虽然这不是完整的代码,但是这是显示fxml弹出窗口的代码,它抛出&#34; java.util.zip.ZipException:找不到zip END标头&#34; java-9中的异常,但在java-8中工作正常。

PopupAction.java

public class PopupAction  
{  
public PopupAction()
{
    super();
}

public void showPopup()
{
    CountDownLatch latch = new CountDownLatch(1);
    Platform.runLater(
            new PopupHandler(latch, "testMsg", "testTitle", "testButtonText"));
    try
    {
        latch.await();
    }
    catch(InterruptedException localInterruptedException)
    {

        Thread.currentThread().interrupt();
    }
}
}

PopupHandler.java

public class PopupHandler implements Runnable
{


private CountDownLatch latch;

private String message;

private String title;

private String buttonText;

public PopupHandler(CountDownLatch latch,
        String message, String title, String buttonText)
{

    this.latch = latch;
    this.message = message;
    this.title = title;
    this.buttonText = buttonText;
}

@Override
public void run()
{
    try
    {
            Stage stage = new Stage(StageStyle.UTILITY);
            Parent root;

                stage.initModality(Modality.APPLICATION_MODAL);
                stage.setResizable(false);
                FXMLViewLoader fXMLViewLoader = new FXMLViewLoader("/fxmlView/warningPopup.fxml");
                root = fXMLViewLoader.getView();

                Scene scene = new Scene(root, 400, 110);
                scene.setFill(Color.TRANSPARENT);
                stage.setScene(scene);
                stage.setResizable(false);
                stage.setTitle(this.title);
                stage.initOwner(Application.getOwnerWindow());
                this.localAtomicBoolean.set(true);
                stage.setAlwaysOnTop(true);
                stage.showAndWait();
    }
    catch(Exception e)
    {
         e.printStackTrace();
    }
    finally
    {
        this.latch.countDown();
    }
}
}

FXMLViewLoader.java

   public final class FXMLViewLoader
   {
private FXMLLoader loader;

public FXMLViewLoader(String fxmlName)
{
    super();
    initialize(fxmlName);
}

private void initialize(String fxmlName)
{
    final URL resource = getResourceURL(fxmlName);
    this.loader = new FXMLLoader(resource);

    try
    {
        this.loader.load();
    }
    catch(Exception e)
    {
       e.printStackTrace();
    }
}

protected URL getResourceURL(String fxmlName)
{
    return this.getClass().getResource(fxmlName);
}


public Parent getView()
{
    return this.loader.getRoot();
}

}

0 个答案:

没有答案