尝试从亚马逊复制和粘贴图像时报告此错误,尽管我们检查可传输对象支持特定的数据风格,但在尝试使用该数据风格获取网址时会失败。我之前没有见过这个错误,最近迁移到了 Java 1.8.0_20,所以我假设问题出在 Java 8 上?
java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<string>http://ecx.images-amazon.com/images/I/41NTPXC8EHL.jpg</string>
<string></string>
</array>
</plist>
at java.net.URL.<init>(URL.java:586)
at java.net.URL.<init>(URL.java:483)
at java.net.URL.<init>(URL.java:432)
at sun.lwawt.macosx.CDataTransferer.translateBytes(CDataTransferer.java:135)
at sun.awt.datatransfer.ClipboardTransferable$DataFactory.getTransferData(ClipboardTransferable.java:71)
at sun.awt.datatransfer.ClipboardTransferable.getTransferData(ClipboardTransferable.java:168)
代码摘录为
public static DataFlavor imageUrlFlavor = new DataFlavor("application/x-java-url;class=java.net.URL");
public void getImage(Transferable trans)
if(trans.isDataFlavorSupported(FileDropTarget.imageUrlFlavor))
{
imageUrl = (URL) trans.getTransferData(FileDropTarget.imageUrlFlavor);
}
最佳答案
不是一个令人满意的答案
您可以列出剪贴板上放置的所有 DataFlavor
trans.getDataFlavors() ;一般来说,副本会包含多种风格,例如纯文本和样式文本。
替代方案
public static DataFlavor imageUrlFlavor =
new DataFlavor(URL.class, "application/x-java-url");
也可能会失败。
关于java - 为什么尝试使用此可传输的数据风格时在 OSX 上没有出现协议(protocol)错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25972660/