java - IllegalArgumentException : negative width in kabeja 的原因是什么

标签 java exception svg dxf

请有人解释一下在使用 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 中的显示方式,负笔画宽度可以是:

  1. 如果不应显示笔划,则设置为 0
  2. 设置为 absolute 值,如果符号应该被忽略,-1mm 的宽度应该与 1mm 相同.

关于java - IllegalArgumentException : negative width in kabeja 的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086686/

相关文章:

java - 如何处理调用commit()或flush()后的异常

css - 有没有办法让 Batik 与 CSS3 样式兼容?

ruby - 使用 RMagick 读取图像时设置密度

java - 设置我的 jnlp 以使用特定的 java 路径运行

java - SAX解析器: How to fetch root element of XML in java without explicitly giving root name?

java - 异常:连接被拒绝:连接

android - 如何将android Canvas 保存为svg?

java - MySQL 批量插入表现得很奇怪

java - 如何发现网络上 Tomcat 服务器的 IP 地址?

java - RMI 注册表远程异常错误