.jar 程序适用于 OS X 但不适用于 Windows
.jar program works on OS X but doesn't work on Windows
我在 Mac 上开发了一个 Java 程序并将其导出为 运行able .jar 文件。它在 OS X 上完美运行,没有错误或警告。但是当我在 Windows 中尝试 运行 时,我得到了一个错误。
我的主函数有两个class:
private static void getImageUrl(ArrayList<String> imagePageUrl) throws IOException{
for (String pageUrl : imagePageUrl){
String url = pageUrl;
Document doc = Jsoup.connect(url).get();
Elements media = doc.select("[src]");
for (Element src : media) {
if ((src.tagName().equals("img")) & (src.attr("abs:src").endsWith("jpg"))){
System.out.println("Downloading: " + src.attr("abs:src"));
String destination = LocalDateTime.now() + ".jpg";
saveImage(src.attr("abs:src"), destination);
}
}
}
}
private static void saveImage(String imageUrl, String destinationFile) throws IOException {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
在 Windows cmd 中,行 System.out.println("Downloading: " + src.attr("abs:src"));
执行成功,但是在打印这行之后,我得到一个错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
我该如何解决这个问题?谢谢。
LocalDateTime.now() + ".jpg" 将生成如下字符串:
2015-06-08T17:05:16.532.jpg
这不是 windows 中的有效文件名。
你有没有试过做这样的事情:
String destination = LocalDateTime.now().toString().replaceAll(":", "-") + ".jpg";
我在 Mac 上开发了一个 Java 程序并将其导出为 运行able .jar 文件。它在 OS X 上完美运行,没有错误或警告。但是当我在 Windows 中尝试 运行 时,我得到了一个错误。
我的主函数有两个class:
private static void getImageUrl(ArrayList<String> imagePageUrl) throws IOException{
for (String pageUrl : imagePageUrl){
String url = pageUrl;
Document doc = Jsoup.connect(url).get();
Elements media = doc.select("[src]");
for (Element src : media) {
if ((src.tagName().equals("img")) & (src.attr("abs:src").endsWith("jpg"))){
System.out.println("Downloading: " + src.attr("abs:src"));
String destination = LocalDateTime.now() + ".jpg";
saveImage(src.attr("abs:src"), destination);
}
}
}
}
private static void saveImage(String imageUrl, String destinationFile) throws IOException {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
在 Windows cmd 中,行 System.out.println("Downloading: " + src.attr("abs:src"));
执行成功,但是在打印这行之后,我得到一个错误:
Exception in thread "main" java.lang.reflect.InvocationTargetException
我该如何解决这个问题?谢谢。
LocalDateTime.now() + ".jpg" 将生成如下字符串:
2015-06-08T17:05:16.532.jpg
这不是 windows 中的有效文件名。 你有没有试过做这样的事情:
String destination = LocalDateTime.now().toString().replaceAll(":", "-") + ".jpg";