Java Windows中的蜡染URL异常
我正在开发这个程序,它可以手动解析和更改svg文件,而我只使用Batik来创建有关svg文件的预览 它应该读取目录中的所有SVG文件,并显示我正在使用的Batik图像以及我在网上找到的转码器类,作为前一段时间另一个程序的建议:Java Windows中的蜡染URL异常,java,windows,svg,batik,Java,Windows,Svg,Batik,我正在开发这个程序,它可以手动解析和更改svg文件,而我只使用Batik来创建有关svg文件的预览 它应该读取目录中的所有SVG文件,并显示我正在使用的Batik图像以及我在网上找到的转码器类,作为前一段时间另一个程序的建议: public class BufferedImageTranscoder extends ImageTranscoder { private BufferedImage image = null; @Override
public class BufferedImageTranscoder extends ImageTranscoder {
private BufferedImage image = null;
@Override
public BufferedImage createImage(int weight, int height)
{
return new BufferedImage(weight, height, BufferedImage.TYPE_INT_ARGB);
}
@Override
public void writeImage(BufferedImage image, TranscoderOutput output) throws TranscoderException
{
this.image = image;
}
public BufferedImage getBufferedImage()
{
return image;
}
public static BufferedImage loadImage(File svgFile, float width, float height) {
BufferedImageTranscoder imageTranscoder = new BufferedImageTranscoder();
imageTranscoder.addTranscodingHint(PNGTranscoder.KEY_WIDTH, width);
imageTranscoder.addTranscodingHint(PNGTranscoder.KEY_HEIGHT, height);
try {
String path = svgFile.getCanonicalPath();
System.out.println(path);
TranscoderInput input = new TranscoderInput(path);
if(input != null)
imageTranscoder.transcode(input, null);
} catch (TranscoderException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
return imageTranscoder.getBufferedImage();
}
}
在macOS上,这个程序似乎工作得很好,没有问题,但当我在Windows中将项目加载到Eclipse中时,我遇到了以下异常:
附带的异常:无法理解位于的连接的URL
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)
在
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
知道是什么原因导致了这种情况,以及我如何修复它吗?可能您在尝试加载的文件的路径/名称方面有一些问题。我发现对TranscodeInput类使用InputStream构造函数会使异常消失,所以至少我发现svg文件中的workaround.url有问题。