judge-server
judge-server copied to clipboard
Error loading java.security file
I wrote a JAVA17.py for jdk 17 testing, But I cannot pass the self-test.
Environment: WSL2, Docker ubuntu 22.04, openjdk-17
Here are my config.yml, JAVA17.py, and the log.
config.yml
runtime:
as_x64: /usr/bin/x86_64-linux-gnu-as
as_x86: /usr/bin/as
awk: /usr/bin/mawk
cat: /usr/bin/cat
g++: /usr/bin/g++
g++11: /usr/bin/g++
g++14: /usr/bin/g++
g++17: /usr/bin/g++
g++20: /usr/bin/g++-11
gcc: /usr/bin/gcc
gcc11: /usr/bin/gcc
ld_x64: /usr/bin/x86_64-linux-gnu-ld
ld_x86: /usr/bin/ld
perl: /usr/bin/perl
python3: /usr/bin/python3
sed: /usr/bin/sed
java17: /usr/lib/jvm/java-17-openjdk-amd64/bin/java
javac17: /usr/lib/jvm/java-17-openjdk-amd64/bin/javac
problem_storage_globs:
- /problems/*
JAVA17.py (mainly copy from JAVA.py)
from dmoj.executors.java_executor import JavacExecutor
class Executor(JavacExecutor):
compiler = 'javac17'
vm = 'java17'
jvm_regex = r'java-17-|openjdk17'
test_program = """\
import java.io.IOException;
interface IORunnable {
public void run() throws IOException;
}
public class self_test {
public static void run(IORunnable target) throws IOException {
target.run();
}
public static void main(String[] args) throws IOException {
run(() -> {
byte[] buffer = new byte[4096];
int read;
while ((read = System.in.read(buffer)) >= 0)
System.out.write(buffer, 0, read);
});
}
}"""
def get_compile_args(self):
return [self.get_compiler(), '-encoding', 'UTF-8', self._code]
log
Self-testing JAVA17: Failed
2023-08-29 12:21:50 obj.compile()
2023-08-29 12:21:50 File "/judge/dmoj/executors/compiled_executor.py", line 212, in compile
2023-08-29 12:21:50 self.warning = self.get_compile_output(process)
2023-08-29 12:21:50 File "/judge/dmoj/executors/compiled_executor.py", line 194, in get_compile_output
2023-08-29 12:21:50 self.handle_compile_error(output)
2023-08-29 12:21:50 File "/judge/dmoj/executors/java_executor.py", line 276, in handle_compile_error
2023-08-29 12:21:50 raise CompileError(output)
2023-08-29 12:21:50 dmoj.error.CompileError: Exception in thread "main" java.lang.InternalError: Error loading java.security file
2023-08-29 12:21:50 at java.base/java.security.Security.initialize(Security.java:106)
2023-08-29 12:21:50 at java.base/java.security.Security$1.run(Security.java:84)
2023-08-29 12:21:50 at java.base/java.security.Security$1.run(Security.java:82)
2023-08-29 12:21:50 at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
2023-08-29 12:21:50 at java.base/java.security.Security.<clinit>(Security.java:82)
2023-08-29 12:21:50 at java.base/sun.security.util.SecurityProperties.getOverridableProperty(SecurityProperties.java:57)
2023-08-29 12:21:50 at java.base/sun.security.util.SecurityProperties.privilegedGetOverridable(SecurityProperties.java:48)
2023-08-29 12:21:50 at java.base/sun.security.util.SecurityProperties.includedInExceptions(SecurityProperties.java:72)
2023-08-29 12:21:50 at java.base/sun.security.util.SecurityProperties.<clinit>(SecurityProperties.java:36)
2023-08-29 12:21:50 at java.base/sun.security.util.FilePermCompat.<clinit>(FilePermCompat.java:45)
2023-08-29 12:21:50 at java.base/java.security.AccessControlContext.<init>(AccessControlContext.java:269)
2023-08-29 12:21:50 at java.base/java.security.AccessController.createWrapper(AccessController.java:647)
2023-08-29 12:21:50 at java.base/java.security.AccessController.doPrivileged(AccessController.java:460)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle$ResourceBundleProviderHelper.loadResourceBundle(ResourceBundle.java:3614)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.loadBundle(ResourceBundle.java:1837)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1768)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1722)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.findBundle(ResourceBundle.java:1722)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1656)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1575)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549)
2023-08-29 12:21:50 at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:932)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.lambda$add$0(JavacMessages.java:121)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.getBundles(JavacMessages.java:140)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.setCurrentLocale(JavacMessages.java:80)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.<init>(JavacMessages.java:112)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.<init>(JavacMessages.java:89)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JavacMessages.instance(JavacMessages.java:58)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.<init>(JCDiagnostic.java:71)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.JCDiagnostic$Factory.instance(JCDiagnostic.java:61)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.Log.<init>(Log.java:319)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.Log.<init>(Log.java:256)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.util.Log.instance(Log.java:236)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:203)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:176)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
2023-08-29 12:21:50 at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
Update: When I install jdk18, it is solved. But I don't know how it happened.
I suspect this is fixed for good with https://github.com/DMOJ/judge-server/commit/95a432b68fce5c512a902a8f8226a01e4abaebf8.