请有人解释一下在使用 Kabeja 包时抛出 IllegalArgumentException: negative width
异常的原因吗?
这是我得到的错误堆栈:
java.lang.IllegalArgumentException: negative width
at java.awt.BasicStroke.<init>(BasicStroke.java:181)
at org.apache.batik.bridge.PaintServer.convertStroke(Unknown Source)
at org.apache.batik.bridge.PaintServer.convertStrokePainter(Unknown Source)
at org.apache.batik.bridge.SVGLineElementBridge.createFillStrokePainter(Unknown Source)
at org.apache.batik.bridge.SVGDecoratedShapeElementBridge.createShapePainter(Unknown Source)
at org.apache.batik.bridge.SVGShapeElementBridge.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
at org.apache.batik.bridge.SVGUseElementBridge.buildCompositeGraphicsNode(Unknown Source)
at org.apache.batik.bridge.SVGUseElementBridge.createGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.buildComposite(Unknown Source)
at org.apache.batik.bridge.GVTBuilder.build(Unknown Source)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.image.ImageTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source)
at org.kabeja.batik.tools.AbstractSAXSerializer.transcode(AbstractSAXSerializer.java:214)
at org.kabeja.batik.tools.AbstractSAXSerializer.endDocument(AbstractSAXSerializer.java:156)
at org.kabeja.svg.SVGGenerator.generateSAX(SVGGenerator.java:361)
at org.kabeja.svg.SVGGenerator.generate(SVGGenerator.java:88)
at org.kabeja.xml.AbstractSAXGenerator.generate(AbstractSAXGenerator.java:37)
at BasicFunc.DXFFileLoad.parseFile(DXFFileLoad.java:54)
at desktopapplication3.Foundation_details.jButton1ActionPerformed(Foundation_details.java:450)
at desktopapplication3.Foundation_details.access$200(Foundation_details.java:12)
at desktopapplication3.Foundation_details$3.actionPerformed(Foundation_details.java:147)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
有人可以解释这个异常的原因吗?
最佳答案
查看堆栈跟踪,似乎是在尝试使用负宽度绘制形状的描边 时触发了错误。那当然是不正确的,因为不可能有负宽度的笔画。 SVG 规范甚至 mentions that a negative width is an error .
我会说 DXF 输入文件是错误的。它在 Autodesk 中渲染良好吗?你能找到笔划错误的元素,并查看它是如何显示的吗?
解决方案是向 Kabeja 项目提交错误报告,请求修复。根据该元素在 Autodesk 中的显示方式,负笔画宽度可以是:
- 如果不应显示笔划,则设置为 0
- 设置为
abs
olute 值,如果符号应该被忽略,-1mm
的宽度应该与1mm
相同.
关于java - IllegalArgumentException : negative width in kabeja 的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086686/