I have a corrupt AoI file. I'm not sure what's wrong with it, but it won't open any more. The "wait spinner" just keeps turning and nothing ever happens. I've also tried linking to an external object in the file and that doesn't work. Is there any way to debug or recover the file? Or am I just out of luck.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm using a later (3.02) version than the one I used to create the file (not sure which). Also, I have not as yet installed nor used any add-ons or scripts that I had in the earlier version. I'll post the file as well.
Here's the complete contents of the console screen (sorry for the length):
C:\Users\nate\Programs\ArtOfIllusion302a>java -jar ArtOfIllusion.jar -Xmx5120m
PostInstall: tempDir is C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-110
7622761276369008
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Objects
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Plugins
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Startup
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Tools
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008
SPManager starting...
file: helpgui-1.1b.jar
file: pircbot.jar
file: jhall.jar
file: jhelpaction.jar
file: AOIHelp.zip
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/pi
rcbot.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/jh
elpaction.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/AO
IHelp.zip
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/he
lpgui-1.1b.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/jh
all.jar
file: PostInstall.jar
SPManager: java temp dir is C:\Users\nate\AppData\Local\Temp\
SPManager: temp dir set to: C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate
-1514319376829470940
java.io.FileNotFoundException: -Xmx5120m (The system cannot find the file specif
ied)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at artofillusion.Scene.<init>(Scene.java:1150)
at artofillusion.ArtOfIllusion.main(ArtOfIllusion.java:223)
Error creating GLCanvasDrawer: java.lang.UnsatisfiedLinkError: no jogl in java.l
ibrary.path
Jul 10, 2015 12:34:40 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
HelpPlugin.ADD: helpset/AOIHelp
resources found=1
registering Docking.Score
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Score
registering Docking.Objects
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Objects
registering Docking.Properties
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Properties
registering LayoutWindow
component= buoy.widget.BFrame$BFrameComponent
Mapped ID=LayoutWindow
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Unknown Source)
at artofillusion.Scene.initFromStream(Scene.java:1345)
at artofillusion.Scene.<init>(Scene.java:1174)
at artofillusion.ArtOfIllusion.openScene(ArtOfIllusion.java:551)
at artofillusion.ArtOfIllusion.openScene(ArtOfIllusion.java:539)
at artofillusion.LayoutWindow.actionPerformed(LayoutWindow.java:1397)
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 buoy.internal.EventLinkRecord.dispatchEvent(EventLinkRecord.java:81)
at buoy.event.EventSource.dispatchEvent(EventSource.java:140)
at buoy.widget.Widget.dispatchEvent(Widget.java:326)
at buoy.widget.BMenuItem$1.actionPerformed(BMenuItem.java:93)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown
Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Yeah, Not sure how, but that file is completely bricked. 6.5MB of... empty space. There is literally no data to try to recover.
As a side note, you stdout listing pointed out a couple of things that could cause you issues in the future. ArtOfIllusion302a>java -jar ArtOfIllusion.jar -Xmx5120m is a bit backwards. The correct sequence is ArtOfIllusion302a>java -Xmx5120m -jar ArtOfIllusion.jar and if you want to be able to use the jogl interactive renderer, you need something slightly more.
As is, your AOI launch is using standard JVM default memory settings, and looking for a file called -Xmx5120m
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for looking at it anyway. I didn't know the order of params mattered. I'll give it a try. I would be interested in using the jogl interactive renderer too. Can you point me to more info?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You just need another property to tell the JVM where to get at the native libraries. Looks like this: javaw -Xmx4096m -Djava.library.path=./lib -jar ArtOfIllusion.jar 1>log.txt 2>errlog.txt
Adjust your memory amount to taste, of course.
AFAIK, order of options doesn't make a difference, except that anything after -jar myjarfile.jar or the equivalent class entry point are passed to the java app's Main() method. Some java programs may very well be picky about the order those options are set in.
The 1>log.txt 2>errlog.txt bit redirects command line output to a pair of files. Most of the time, including exceptions, etc. that AOI can continue after, are sent to log.txt. errlog Usually means something was bad enough to crash java, as well.
I'm sorry about the file. I hope some of the work is backed up in other places. This incident has pointed out something that we could improve. Though there is no way to recover data from a completely empty file, AOI should give a readable warning in such a case, and then move on, rather than sitting, waiting for something that is never going to happen.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have a corrupt AoI file. I'm not sure what's wrong with it, but it won't open any more. The "wait spinner" just keeps turning and nothing ever happens. I've also tried linking to an external object in the file and that doesn't work. Is there any way to debug or recover the file? Or am I just out of luck.
Hi, Nathan. Sorry I missed this.
Couple of things to try:
First, check your console output, or install the log plugin. It would be good to know what AOI thinks is happening.
Second, If the stuff in there is not private, could you post the file? Its a lot easier to find what is going on if we can experiment.
Third, have you changed anything else about AOI recently?
I'm using a later (3.02) version than the one I used to create the file (not sure which). Also, I have not as yet installed nor used any add-ons or scripts that I had in the earlier version. I'll post the file as well.
Here's the complete contents of the console screen (sorry for the length):
C:\Users\nate\Programs\ArtOfIllusion302a>java -jar ArtOfIllusion.jar -Xmx5120m
PostInstall: tempDir is C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-110
7622761276369008
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Objects
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Plugins
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Startup
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008\Tools
PostInstall: deleting C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate-11076
22761276369008
SPManager starting...
file: helpgui-1.1b.jar
file: pircbot.jar
file: jhall.jar
file: jhelpaction.jar
file: AOIHelp.zip
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/pi
rcbot.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/jh
elpaction.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/AO
IHelp.zip
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/he
lpgui-1.1b.jar
SPM: adding path: file:/C:/Users/nate/Programs/ArtOfIllusion302a/Plugins/Help/jh
all.jar
file: PostInstall.jar
SPManager: java temp dir is C:\Users\nate\AppData\Local\Temp\ SPManager: temp dir set to: C:\Users\nate\AppData\Local\Temp\spmanager-temp-nate
-1514319376829470940
java.io.FileNotFoundException: -Xmx5120m (The system cannot find the file specif
ied)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at artofillusion.Scene.<init>(Scene.java:1150)
at artofillusion.ArtOfIllusion.main(ArtOfIllusion.java:223)
Error creating GLCanvasDrawer: java.lang.UnsatisfiedLinkError: no jogl in java.l
ibrary.path
Jul 10, 2015 12:34:40 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
HelpPlugin.ADD: helpset/AOIHelp
resources found=1
registering Docking.Score
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Score
registering Docking.Objects
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Objects
registering Docking.Properties
component= buoyx.docking.DockableWidget$DockableWidgetPanel
Mapped ID=Docking.Properties
registering LayoutWindow
component= buoy.widget.BFrame$BFrameComponent
Mapped ID=LayoutWindow
java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Unknown Source)
at artofillusion.Scene.initFromStream(Scene.java:1345)
at artofillusion.Scene.<init>(Scene.java:1174)
at artofillusion.ArtOfIllusion.openScene(ArtOfIllusion.java:551)
at artofillusion.ArtOfIllusion.openScene(ArtOfIllusion.java:539)
at artofillusion.LayoutWindow.actionPerformed(LayoutWindow.java:1397)
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 buoy.internal.EventLinkRecord.dispatchEvent(EventLinkRecord.java:81)
at buoy.event.EventSource.dispatchEvent(EventSource.java:140)
at buoy.widget.Widget.dispatchEvent(Widget.java:326)
at buoy.widget.BMenuItem$1.actionPerformed(BMenuItem.java:93)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown
Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Sour
ce)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Hi nathan,
the marbles.aoi you posted is an empty file.
view with fileviewer or wordpad etc.
Yeah, Not sure how, but that file is completely bricked. 6.5MB of... empty space. There is literally no data to try to recover.
As a side note, you stdout listing pointed out a couple of things that could cause you issues in the future.
ArtOfIllusion302a>java -jar ArtOfIllusion.jar -Xmx5120m
is a bit backwards. The correct sequence isArtOfIllusion302a>java -Xmx5120m -jar ArtOfIllusion.jar
and if you want to be able to use the jogl interactive renderer, you need something slightly more.As is, your AOI launch is using standard JVM default memory settings, and looking for a file called
-Xmx5120m
Thanks for looking at it anyway. I didn't know the order of params mattered. I'll give it a try. I would be interested in using the jogl interactive renderer too. Can you point me to more info?
You just need another property to tell the JVM where to get at the native libraries. Looks like this:
javaw -Xmx4096m -Djava.library.path=./lib -jar ArtOfIllusion.jar 1>log.txt 2>errlog.txt
Adjust your memory amount to taste, of course.
AFAIK, order of options doesn't make a difference, except that anything after
-jar myjarfile.jar
or the equivalent class entry point are passed to the java app'sMain()
method. Some java programs may very well be picky about the order those options are set in.The
1>log.txt 2>errlog.txt
bit redirects command line output to a pair of files. Most of the time, including exceptions, etc. that AOI can continue after, are sent to log.txt. errlog Usually means something was bad enough to crash java, as well.I'm sorry about the file. I hope some of the work is backed up in other places. This incident has pointed out something that we could improve. Though there is no way to recover data from a completely empty file, AOI should give a readable warning in such a case, and then move on, rather than sitting, waiting for something that is never going to happen.
Thanks for all the help and advice Luke. You went well above and beyond.