I have been making modules for some time without issue. I upgraded to 3.7.1. Now I cannot save any vmdx files. It gives me the following error, on new files and old ones that I have not edited for months.
java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
at java.base/java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:526)
at java.base/java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:153)
at VASSAL.tools.io.ZipArchive.writeOldEntries(ZipArchive.java:545)
at VASSAL.tools.io.ZipArchive.writeToZip(ZipArchive.java:469)
at VASSAL.tools.io.ZipArchive.writeToDisk(ZipArchive.java:493)
at VASSAL.tools.io.ZipArchive.flush(ZipArchive.java:383)
at VASSAL.tools.ArchiveWriter.write(ArchiveWriter.java:297)
at VASSAL.tools.ArchiveWriter.saveButVerify(ArchiveWriter.java:276)
at VASSAL.build.GameModule.save(GameModule.java:2194)
at VASSAL.build.GameModule.save(GameModule.java:2167)
at VASSAL.launch.ModuleEditorWindow.lambda$save$0(ModuleEditorWindow.java:94)
at VASSAL.launch.EditorWindow$7.ok(EditorWindow.java:486)
at VASSAL.configure.ValidationReportDialog.lambda$createOkButton$1(ValidationReportDialog.java:93)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2314)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:407)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6620)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3398)
at java.desktop/java.awt.Component.processEvent(Component.java:6385)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4995)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4827)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4827)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
You are correct I am trying to edit the module not the extension. I can seid it to you if you give me a private address to send the link. I can’t post it here till Avalance Press announces the availability.
OK was going to send you a link to download, but at this time the error is gone. Don’t know if it was me or the app or the environment but I should cancel this at this time and re-open if necessary.
THANK YOU SO MUCH for helping. I really appreciate that and this community and environment for letting me create.
Yes, I can now. I am new so that makes sense. I have to go to my paying job now and I think it is working so I will contact you on this if it re-occures
Given that this bug was filed in 2015, I would be surprised if it’s ever fixed.
The file in the module triggering the bug I believe is this one:
-rwxr-xr-x 1.0 unx 0 bX stor 23-May-10 14:20 images/Player Info Markers
That’s output produced by the zipinfo command run on the module. What’s it’s showing is that images/Player Info Markers is a file of zero size.
When I run zipfnfo -v to get additional information, I see the following for that file:
Central directory entry #201:
---------------------------
There are an extra 8 bytes preceding this file.
images/Player Info Markers
offset of local header from start of archive: 25278607
(000000000181B88Fh) bytes
file system or operating system of origin: Unix
version of encoding software: 1.0
minimum file system compatibility required: MS-DOS, OS/2 or NT FAT
minimum software version required to extract: 1.0
compression method: none (stored)
file security status: not encrypted
extended local header: yes
file last modified on (DOS date/time): 2023 May 10 06:20:54
file last modified on (UT extra field modtime): 2023 May 10 14:20:54 local
file last modified on (UT extra field modtime): 2023 May 10 13:20:54 UTC
32-bit CRC value (hex): 00000000
compressed size: 0 bytes
uncompressed size: 0 bytes
length of filename: 26 characters
length of extra field: 32 bytes
length of file comment: 0 characters
disk number on which file begins: disk 1
apparent file type: binary
Unix file attributes (100755 octal): -rwxr-xr-x
MS-DOS file attributes (00 hex): none
The central-directory extra field contains:
- A subfield with ID 0x5455 (universal time) and 13 data bytes.
The local extra field has UTC/GMT modification/access/creation times.
- A subfield with ID 0x7875 (Unix UID/GID (any size)) and 11 data bytes:
01 04 f6 01 00 00 04 14 00 00 00.
There is no file comment.
You can see that the compression method is “stored” and the file has an extended local header, which is exactly what triggers the bug.
Thank you @uckelman That was the issue. I do not know how that file was written but it showed up in the finder of the images folder with zero bytes so it was easy to find. I deleted and recompressed and it opens and saves like a charm now.
Wish I could buy you a beer. Thank you especially for the great explanation with all the detail.