Батик создает пустой SVG на MacJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Батик создает пустой SVG на Mac

Сообщение Anonymous »

Я создал программу для создания календаря в виде изображения SVG, и она отлично работает, когда я запускаю ее в Windows, однако при запуске на Mac она просто создает пустой файл SVG. Может кто-нибудь помочь мне разобраться, что происходит?

Код: Выделить всё

public void getSVG() throws IOException
{
DOMImplementation imp = SVGDOMImplementation.getDOMImplementation();
String s = SVGDOMImplementation.SVG_NAMESPACE_URI;
SVGDocument doc = (SVGDocument) imp.createDocument(s, "svg", null);
SVGGraphics2D svgGen = new SVGGraphics2D(doc);
String ss = findFile().getAbsolutePath();
Writer out = new FileWriter(ss);
this.paint(svgGen);
svgGen.stream(out, true);
out.flush();
out.close();
}
Я особо ничего не пробовал, так как в Windows все работает отлично. Я не знаю, почему на Mac все будет по-другому.
Обновление: я получил журнал ошибок на Mac после настройки Spring. Вот оно.

Код: Выделить всё

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.batik.svggen.ImageHandlerBase64Encoder.encodeImage(ImageHandlerBase64Encoder.java:157)
at org.apache.batik.svggen.ImageHandlerBase64Encoder.handleHREF(ImageHandlerBase64Encoder.java:133)
at org.apache.batik.svggen.ImageHandlerBase64Encoder.handleHREF(ImageHandlerBase64Encoder.java:72)
at org.apache.batik.svggen.DefaultImageHandler.handleImage(DefaultImageHandler.java:63)
at org.apache.batik.svggen.SimpleImageHandler.handleImage(SimpleImageHandler.java:100)
at org.apache.batik.svggen.SVGGraphics2D.drawImage(SVGGraphics2D.java:676)
at com.apple.laf.AquaImageFactory$SlicedImageControl.paintStretchedMiddles(AquaImageFactory.java:389)
at com.apple.laf.AquaImageFactory$SlicedImageControl.paint(AquaImageFactory.java:377)
at com.apple.laf.AquaPainter$AquaNineSlicingImagePainter.paint(AquaPainter.java:128)
at com.apple.laf.AquaPainter.paint(AquaPainter.java:90)
at com.apple.laf.AquaScrollRegionBorder.paintBorder(AquaScrollRegionBorder.java:64)
at javax.swing.JComponent.paintBorder(JComponent.java:943)
at javax.swing.JComponent.paint(JComponent.java:1051)
at javax.swing.JComponent.paintChildren(JComponent.java:883)
at javax.swing.JComponent.paint(JComponent.java:1059)
at calendarmaker.Objects.Pane.getSVG(Pane.java:97)
at calendarmaker.Objects.Window.actionPerformed(Window.java:91)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:262)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3318)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
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:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
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)
Похоже, что нулевой указатель предназначен для изображения. Я не знаю почему.

Подробнее здесь: https://stackoverflow.com/questions/787 ... svg-on-mac
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»