.jar程序适用于OS X,但不适用于Windows

时间:2015-08-03 17:16:41

标签: java macos executable-jar

我在Mac上开发了一个Java程序,并将其导出为可运行的.jar文件。它在OS X上完美运行,没有错误或警告。但是当我尝试在Windows中运行它时,我收到了一个错误。

以下是我的主要课程中的两个功能:

 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"));已成功执行,但在此行打印后,我收到错误消息:

  

线程“main”中的异常java.lang.reflect.InvocationTargetException

我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

LocalDateTime.now()+“.jpg”将生成如下字符串:

2015-06-08T17:05:16.532.jpg

这不是Windows中的有效文件名。 你尝试过这样的事情吗?

String destination = LocalDateTime.now().toString().replaceAll(":", "-") + ".jpg";