-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
None
-
19.0.1
-
generic
-
generic
ADDITIONAL SYSTEM INFORMATION :
[OS] Darwin Xuan 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct 9 20:14:54 PDT 2022; root:xnu-8792.41.9~2/RELEASE_X86_64 x86_64
[java] javac --version
javac 19.0.1
A DESCRIPTION OF THE PROBLEM :
Failed to compile a java file using javac 19.0.1 or javac 17.0.5, which can be compiled successfully previously in java 17.0.2.
The arguments are:
--class-path
/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-java-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v105-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-edge-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-api-logs-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-remote-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v85-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jcommander-1.82.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v104-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-buffer-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-trace-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-service-annotations-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-support-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/checker-qual-3.12.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-exporter-common-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-classes-kqueue-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v105-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/error_prone_annotations-2.11.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/slf4j-api-2.0.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-handler-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chrome-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-api-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-epoll-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v104-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-unix-common-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-resolver-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v106-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-exporter-logging-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-socks-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-context-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/async-http-client-netty-utils-2.12.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/failureaccess-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chrome-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-edge-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chromium-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-classes-epoll-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jakarta.activation-1.2.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-api-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-common-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-metrics-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-firefox-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chromium-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-safari-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-extension-autoconfigure-spi-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-support-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-reactive-streams-2.0.4.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-java-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-kqueue-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-json-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/commons-exec-1.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-firefox-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-semconv-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-http-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jsoup-1.15.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/j2objc-annotations-1.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/reactive-streams-1.0.4.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/async-http-client-2.12.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-http-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-service-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/byte-buddy-1.12.18.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v106-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-remote-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-common-1.2.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-handler-proxy-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-http-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-json-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v85-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/failsafe-3.3.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/guava-31.1-jre.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-common-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-ie-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jsr305-3.0.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-ie-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-extension-autoconfigure-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-safari-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-api-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jtoml-2.0.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-logs-1.19.0-alpha.jar
Downloader.java
-Xlint
REGRESSION : Last worked in version 17
ACTUAL -
An exception has occurred in the compiler (19.0.1). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.nio.file.ReadOnlyFileSystemException
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newOutputStream(ZipFileSystem.java:804)
at jdk.zipfs/jdk.nio.zipfs.ZipPath.newOutputStream(ZipPath.java:911)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newOutputStream(ZipFileSystemProvider.java:268)
at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
at jdk.compiler/com.sun.tools.javac.file.PathFileObject.openOutputStream(PathFileObject.java:451)
at jdk.compiler/com.sun.tools.javac.jvm.ClassWriter.writeClass(ClassWriter.java:1503)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:738)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1635)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1603)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:317)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176)
at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
---------- BEGIN SOURCE ----------
import org.openqa.selenium.Cookie;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.*;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Date;
import java.util.Set;
class StopIteration extends Exception {
@Override
public String getMessage() {
return " --> 爬取的网页中不含有相关帖子";
}
}
public class Downloader {
public static final String INITIAL_PAGE = "https://s.weibo.com/";
public static final String COOKIES = "cookies.txt";
public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {
String keyword = args[1];
int year = Integer.parseInt(args[2]) + 1900;
int month = Integer.parseInt(args[3]) - 1;
int day = Integer.parseInt(args[4]);
Date date = new Date(year, month, day);
ArrayList<String> URLs = getURL(keyword, date, 15);
getWebpages(keyword, URLs);
}
public static ArrayList<String> getURL(String keyword, Date startDate, int days) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("https://s.weibo.com/weibo?q=").append(keyword);
stringBuilder.append("&typeall=1&suball=1×cope=custom%3A");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH");
long time = startDate.getTime();
Date date = new Date(time);
int i = 0;
ArrayList<String> arrayList = new ArrayList<>();
while (i < days * 24) {
date.setTime(time + i * 3600000L);
String beginTime = simpleDateFormat.format(date);
date.setTime(time + ++i * 3600000L);
String endTime = simpleDateFormat.format(date);
String URL = stringBuilder + beginTime + "%3A" + endTime + "&Refer=g";
arrayList.add(URL);
}
return arrayList;
}
public static void getWebpages(String directoryName, ArrayList<String> URLs) throws IOException, InterruptedException, ClassNotFoundException {
File file = new File(directoryName);
System.out.println(file.mkdir());
Spider spider = new Spider(3, true);
spider.getPage(INITIAL_PAGE);
System.out.println(" --> 等待登录...");
Thread.sleep(15000);
spider.loadCookies(COOKIES);
spider.getPage(INITIAL_PAGE);
Thread.sleep(10000);
for (int i = 0, urLsSize = URLs.size(); i < urLsSize; i++) {
String URL = URLs.get(i);
try {
int page = 1;
while (page < 51) {
spider.writePage(URL, directoryName + "/" + i + "-" + page + ".html");
System.out.printf("%s Success!\n", i + "-" + page++);
}
} catch (StopIteration | IOException stopIteration) {
System.out.println(stopIteration.getMessage());
} catch (Exception exception) {
System.out.println(" --> 未知错误!");
}
}
spider.closeDriver();
System.out.println("Done!");
}
}
class Spider {
private static ChromeDriver chromeDriver;
public Spider() {
chromeDriver = new ChromeDriver();
chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
public Spider(int waitTime, boolean isHeadless) {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(isHeadless);
chromeOptions.addArguments("--disable-gpu");
chromeDriver = new ChromeDriver(chromeOptions);
chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(waitTime));
}
public void getPage(String url) {
chromeDriver.get(url);
}
public void writePage(String url, String filename) throws IOException, StopIteration {
getPage(url);
String pageSource = chromeDriver.getPageSource();
if (pageSource.contains("card card-no-result s-pt20b40")) {
throw new StopIteration();
}
try (FileWriter fileWriter = new FileWriter(filename)) {
fileWriter.write(pageSource);
}
}
public void closeDriver() {
chromeDriver.close();
}
public void writeCookies(String url, String filename) throws InterruptedException, IOException {
chromeDriver.get(url);
Thread.sleep(15000);
Set<Cookie> cookies = chromeDriver.manage().getCookies();
FileOutputStream fileOutputStream = new FileOutputStream(filename);
ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
outputStream.writeObject(cookies);
}
public void loadCookies(String filename) throws IOException, ClassNotFoundException {
FileInputStream fileInputStream = new FileInputStream(filename);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
if (readObject instanceof Set<?> objects) {
objects.forEach(object -> chromeDriver.manage().addCookie((Cookie) object));
}
}
}
---------- END SOURCE ----------
FREQUENCY : always
[OS] Darwin Xuan 22.1.0 Darwin Kernel Version 22.1.0: Sun Oct 9 20:14:54 PDT 2022; root:xnu-8792.41.9~2/RELEASE_X86_64 x86_64
[java] javac --version
javac 19.0.1
A DESCRIPTION OF THE PROBLEM :
Failed to compile a java file using javac 19.0.1 or javac 17.0.5, which can be compiled successfully previously in java 17.0.2.
The arguments are:
--class-path
/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-java-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v105-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-edge-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-api-logs-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-remote-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v85-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jcommander-1.82.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v104-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-buffer-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-trace-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-service-annotations-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-support-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/checker-qual-3.12.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-exporter-common-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-classes-kqueue-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v105-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/error_prone_annotations-2.11.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/slf4j-api-2.0.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-handler-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chrome-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-api-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-epoll-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v104-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-unix-common-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-resolver-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v106-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-exporter-logging-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-socks-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-context-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/async-http-client-netty-utils-2.12.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/failureaccess-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chrome-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-edge-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chromium-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-classes-epoll-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jakarta.activation-1.2.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-api-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-common-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-metrics-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-firefox-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-chromium-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-safari-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-extension-autoconfigure-spi-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-support-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-reactive-streams-2.0.4.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-java-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-transport-native-kqueue-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-json-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/commons-exec-1.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-firefox-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-semconv-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-http-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jsoup-1.15.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/j2objc-annotations-1.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/reactive-streams-1.0.4.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/async-http-client-2.12.3.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-http-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-service-1.0.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/byte-buddy-1.12.18.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v106-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-remote-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/auto-common-1.2.1.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-handler-proxy-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-http-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-json-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-devtools-v85-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/failsafe-3.3.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/guava-31.1-jre.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-common-1.19.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-ie-driver-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jsr305-3.0.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-ie-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-extension-autoconfigure-1.19.0-alpha.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/netty-codec-4.1.84.Final.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-safari-driver-4.5.2.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/selenium-api-4.5.2-sources.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/jtoml-2.0.0.jar:/Users/chenxuan/IdeaProjects/Oct-26/lib/opentelemetry-sdk-logs-1.19.0-alpha.jar
Downloader.java
-Xlint
REGRESSION : Last worked in version 17
ACTUAL -
An exception has occurred in the compiler (19.0.1). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compiler in your report. Thank you.
java.nio.file.ReadOnlyFileSystemException
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.checkWritable(ZipFileSystem.java:370)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.newOutputStream(ZipFileSystem.java:804)
at jdk.zipfs/jdk.nio.zipfs.ZipPath.newOutputStream(ZipPath.java:911)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newOutputStream(ZipFileSystemProvider.java:268)
at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
at jdk.compiler/com.sun.tools.javac.file.PathFileObject.openOutputStream(PathFileObject.java:451)
at jdk.compiler/com.sun.tools.javac.jvm.ClassWriter.writeClass(ClassWriter.java:1503)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.genCode(JavaCompiler.java:738)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1635)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.generate(JavaCompiler.java:1603)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:317)
at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176)
at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
---------- BEGIN SOURCE ----------
import org.openqa.selenium.Cookie;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import java.io.*;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Date;
import java.util.Set;
class StopIteration extends Exception {
@Override
public String getMessage() {
return " --> 爬取的网页中不含有相关帖子";
}
}
public class Downloader {
public static final String INITIAL_PAGE = "https://s.weibo.com/";
public static final String COOKIES = "cookies.txt";
public static void main(String[] args) throws InterruptedException, IOException, ClassNotFoundException {
String keyword = args[1];
int year = Integer.parseInt(args[2]) + 1900;
int month = Integer.parseInt(args[3]) - 1;
int day = Integer.parseInt(args[4]);
Date date = new Date(year, month, day);
ArrayList<String> URLs = getURL(keyword, date, 15);
getWebpages(keyword, URLs);
}
public static ArrayList<String> getURL(String keyword, Date startDate, int days) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("https://s.weibo.com/weibo?q=").append(keyword);
stringBuilder.append("&typeall=1&suball=1×cope=custom%3A");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH");
long time = startDate.getTime();
Date date = new Date(time);
int i = 0;
ArrayList<String> arrayList = new ArrayList<>();
while (i < days * 24) {
date.setTime(time + i * 3600000L);
String beginTime = simpleDateFormat.format(date);
date.setTime(time + ++i * 3600000L);
String endTime = simpleDateFormat.format(date);
String URL = stringBuilder + beginTime + "%3A" + endTime + "&Refer=g";
arrayList.add(URL);
}
return arrayList;
}
public static void getWebpages(String directoryName, ArrayList<String> URLs) throws IOException, InterruptedException, ClassNotFoundException {
File file = new File(directoryName);
System.out.println(file.mkdir());
Spider spider = new Spider(3, true);
spider.getPage(INITIAL_PAGE);
System.out.println(" --> 等待登录...");
Thread.sleep(15000);
spider.loadCookies(COOKIES);
spider.getPage(INITIAL_PAGE);
Thread.sleep(10000);
for (int i = 0, urLsSize = URLs.size(); i < urLsSize; i++) {
String URL = URLs.get(i);
try {
int page = 1;
while (page < 51) {
spider.writePage(URL, directoryName + "/" + i + "-" + page + ".html");
System.out.printf("%s Success!\n", i + "-" + page++);
}
} catch (StopIteration | IOException stopIteration) {
System.out.println(stopIteration.getMessage());
} catch (Exception exception) {
System.out.println(" --> 未知错误!");
}
}
spider.closeDriver();
System.out.println("Done!");
}
}
class Spider {
private static ChromeDriver chromeDriver;
public Spider() {
chromeDriver = new ChromeDriver();
chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
}
public Spider(int waitTime, boolean isHeadless) {
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setHeadless(isHeadless);
chromeOptions.addArguments("--disable-gpu");
chromeDriver = new ChromeDriver(chromeOptions);
chromeDriver.manage().timeouts().implicitlyWait(Duration.ofSeconds(waitTime));
}
public void getPage(String url) {
chromeDriver.get(url);
}
public void writePage(String url, String filename) throws IOException, StopIteration {
getPage(url);
String pageSource = chromeDriver.getPageSource();
if (pageSource.contains("card card-no-result s-pt20b40")) {
throw new StopIteration();
}
try (FileWriter fileWriter = new FileWriter(filename)) {
fileWriter.write(pageSource);
}
}
public void closeDriver() {
chromeDriver.close();
}
public void writeCookies(String url, String filename) throws InterruptedException, IOException {
chromeDriver.get(url);
Thread.sleep(15000);
Set<Cookie> cookies = chromeDriver.manage().getCookies();
FileOutputStream fileOutputStream = new FileOutputStream(filename);
ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
outputStream.writeObject(cookies);
}
public void loadCookies(String filename) throws IOException, ClassNotFoundException {
FileInputStream fileInputStream = new FileInputStream(filename);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Object readObject = objectInputStream.readObject();
if (readObject instanceof Set<?> objects) {
objects.forEach(object -> chromeDriver.manage().addCookie((Cookie) object));
}
}
}
---------- END SOURCE ----------
FREQUENCY : always