To the post about crashing, from XroM ... I had the exact same problem. As Puybaret mentioned, I also suspected that it was the same graphics issue as launching the SH3D, which is solved using the 2nd script (which pulls different Java graphic libraries, I think).
So, I created a similar script for the furniture editor. Sorry if this was obvious (I'm newbie ). Copy this script in the application directory where the other 2 SweetHome3D scripts are. And copy the FurnitureLibraryEditor-1.20.jar in the lib directory (of the same application directory).
#!/bin/sh # Retrieve Sweet Home 3D directory PROGRAM=`readlink "$0"` if [ "$PROGRAM" = "" ];then PROGRAM=$0 fi PROGRAM_DIR=`dirname "$PROGRAM"`
# Run Sweet Home 3D exec exec "$PROGRAM_DIR"/jre8/bin/java -Xmx1024m -classpath "$PROGRAM_DIR"/lib/FurnitureLibraryEditor-1.20.jar:"$PROGRAM_DIR"/lib/Furniture.jar:"$PROGRAM_DIR"/lib/Textures.jar:"$PROGRAM_DIR"/lib/Help.jar:"$PROGRAM_DIR"/lib/iText-2.1.7.jar:"$PROGRAM_DIR"/lib/freehep-vectorgraphics-svg-2.1.1b.jar:"$PROGRAM_DIR"/lib/sunflow-0.07.3i.jar:"$PROGRAM_DIR"/lib/jmf.jar:"$PROGRAM_DIR"/lib/batik-svgpathparser-1.7.jar:"$PROGRAM_DIR"/lib/j3dcore.jar:"$PROGRAM_DIR"/lib/j3dutils.jar:"$PROGRAM_DIR"/lib/vecmath.jar:"$PROGRAM_DIR"/jre8/lib/javaws.jar -Djava.library.path="$PROGRAM_DIR"/lib com.eteks.furniturelibraryeditor.FurnitureLibraryEditor -open "$1"
Now it doesn't crash. Things seem to work fine except that I get an error:
com.eteks.sweethome3d.model.RecorderException: Invalid furniture library file at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.readFurnitureLibrary(Unknown Source) at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.readFurnitureLibrary(Unknown Source) at com.eteks.furniturelibraryeditor.viewcontroller.EditorController$3.call(Unknown Source) at com.eteks.furniturelibraryeditor.viewcontroller.EditorController$3.call(Unknown Source) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at com.eteks.sweethome3d.viewcontroller.ThreadedTaskController$1.run(Unknown Source) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.io.IOException: Can't copy file to /tmp/furniture3331676379223917287.sh3f at com.eteks.furniturelibraryeditor.io.FurnitureLibraryFileRecorder.copyFile(Unknown Source) ... 11 more
It does create the sh3f file in /tmp (I am in Linux) but get the error... If I ignore and keep going everything seems fine but not sure I'll see other errors down the road. I just started using it...
Regardless, thanks a lot for SH3D and the furniture editor. Should invite you one day to the place I am remodeling with it
help. I have downloaded the furniture library editor and the software simply doesn't run. i tried opening it with JAVA. there is a very quick blink on the screen but then nothing. i have windows 7 installed. please help. I have tried all methods listed here: The easiest way to launch it is to double-click on the file. If this method fails, choose open or launch with Java in its contextual menu, or open a Terminal window and run the command:
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hello, i have used version 1.20 of the library a bit on a Mac Osx system (Sierra) with both java 1.6 and 1.8 installed (1.8 as default) and i continue to see in console issue of null pointer exception when clicking. I can use the library for a single operation (add a new 3d model, or rename, or delete). At each operation I have to save, close, reopen and go on, which is very tedious... is there a fix or there will be a fix for this? Do you need further logs/info?
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
Please post the stack trace that appears in the console, that could be useful.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hello, this is what happens with 1.21 when: Open the editor, import a 3ds model I already use in my house (and in another library), double click on it in the list of items.
From what i can see, is a problem of the table render, shame on you old swing!
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleChild(JTable.java:7031) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:7418) at javax.swing.JTable$AccessibleJTable.valueChanged(JTable.java:6933) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405) at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415) at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459) at javax.swing.JTable.changeSelectionModel(JTable.java:2389) at javax.swing.JTable.changeSelection(JTable.java:2456) at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115) at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038) at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mousePressed(BasicTableUI.java:798) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.Component.processMouseEvent(Component.java:6532) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4522) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleChild(JTable.java:7031) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:7418) at javax.swing.JTable$AccessibleJTable.valueChanged(JTable.java:6933) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184) at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:154) at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:685) at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:955) at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1166) at javax.swing.plaf.basic.BasicTableUI$MouseInputHandler.mouseReleased(BasicTableUI.java:802) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) java.lang.NullPointerException at com.eteks.furniturelibraryeditor.swing.FurnitureLibraryTable$FurnitureLibraryTableColumnModel$6.getTableCellRendererComponent(Unknown Source) at javax.swing.JTable$AccessibleJTable.getAccessibleAt(JTable.java:6990) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:414) at sun.lwawt.macosx.CAccessibility$23.call(CAccessibility.java:393) at sun.lwawt.macosx.LWCToolkit$CallableWrapper.run(LWCToolkit.java:597) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
I couldn't reproduce this issue on my side, but maybe I didn't test correctly your "import a 3ds model I already use in my house (and in another library)" suggestion. There should be no difference in how the Furniture Library Editor manages completely unknown 3DS models or the ones you used once in a Sweet Home 3D project. What detail could I have missed?
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hi, I think I did not explain correctly what the issue is! The error is not related to what model I use (it was just a specification). This is an issue with Java, AWT/SWING and OSX Sierra. The problem is completely UI related, clicks do not work correctly, events duplicated.... I did the same the other day on a Windows 7 machine and it works perfectly. Currently I'm running java build 1.8.0_91-b14 on OSX 10.12.6 I tryed to force running with the legacy java 1.6 but it did not change anything. I'm quite sure it is something related to OSX, but can't understand what...
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Furniture Library Editor released
My attempt was made under macOS 10.12.6 with Java 8u144. Maybe it could worth that you try with a more recent Java version?
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Italia
Joined: May 12, 2017
Post Count: 65
Status:
Offline
Re: Furniture Library Editor released
Hi, even with 8u144 it gives the issue when double clicking on an imported forniture. Imported 2 forniture and double clicked on one of the two.... Gives the issue.
Is the jar code opensource? Maybe I can try to compile and debug when I have a couple of hours!
Joined: Jan 3, 2011
Post Count: 44
Status:
Offline
Re: Furniture Library Editor released
I use Windows system for a few days ago, I can't enter the furniture Library Editor's work, I will try to remove all JAVA and install JDK-8u144-Window, OK.