【样题】
A+B Problem
参考:https://blog.csdn.net/with_wine/article/details/118941074
import java.util.Scanner; public class Main { public static void main(String[] args) { // write your code here Scanner in = new Scanner(System.in); int a=in.nextInt(); int b=in.nextInt(); System.out.println(a + b); } }
【问题】
在 hustoj 中输入 Java 代码后,报错:答案错误 AC:0%
查看错误信息:
3 \ Execution error, USE_DOCKER:1 ! > You need to install compiler VM or runtime for your language.
需要安装 JDK 编译器。
在 hustoj 支持QQ群里询问后,得到建议:
参考:http://www.hustoj.com/?p=1433
我已经安装了Jdk为何Java还是编译错误?
新安装的系统需要重启才能判java,jdk是安装在docker容器中的,外部安装jdk不会起作用。如果要修改jdk的版本,需要以root身份到/home/judge/src/install目录下修改Dockfile文件(内有注释),然后运行bash docker.sh。
编辑文件:/home/judge/src/install/Dockerfile
添加:
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends default-jdk RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends openjdk-11-jdk-headless RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends openjdk-17-jdk-headless RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends ecj
执行:
cd /home/judge/src/install && bash docker.sh
然后重启服务器。
再次在 hustoj 中输入 Java 代码后:
1. 显示:编译中 0%
2. 显示:编译错误
查看编译信息:
Main.java:9: 错误: 非法的类型开始 import java.io.*; ^ Main.java:9: 错误: 需要<标识符> import java.io.*; ^ Main.java:10: 错误: 非法的类型开始 import java.util.*; ^ Main.java:10: 错误: 需要<标识符> import java.util.*; ^ 4 个错误
未遂待决。
【参考】
参考:https://blog.csdn.net/qq_43668570/article/details/96715116
参考:https://www.cnblogs.com/crxis/p/8945848.html
参考:https://blog.csdn.net/qq_43668570/article/details/96715116
参考:https://www.cnblogs.com/coded-ream/p/7207916.html
参考:https://edviv.blog.csdn.net/article/details/123585849
参考:https://blog.csdn.net/yybird_/article/details/46050023
参考:https://blog.csdn.net/huplion/article/details/51405007
为何我的C/C++都能用,唯独Java总是CE/RE?
参考:https://github.com/zhblue/hustoj/blob/master/wiki/FAQ.md
目前只支持sun原版jdk和openjdk,其他jdk暂不能保证支持。如果你用的是64位系统,你可能需要自己调整一下源代码。请联系我。
Try SUN-JDK or openjdk,if you are working with a 64bit System, check issue25
参考:https://github.com/zhblue/hustoj/issues/26/
请问如何设置使测评系统可以编译java代码 #26
sudo apt-get install openjdk-7-jdk
在 Dockfile中添加后执行,报错:
E: Package ‘openjdk-7-jdk’ has no installation candidate
是因为Ubuntu16.04的安装源已经默认没有openjdk7了。
hustoj FAQs
Java 使用 OpenJDK 11.0.9.1 编译,命令为 javac -J-Xms32m -J-Xmx256m Main.java,如果您的代码中没有 public class,请将入口类命名为 Main,在评测时提供额外 2 秒的运行时间和 512MB 的运行内存。
这里给出的编译器版本仅供参考,请以实际编译器版本为准。
Command ‘javac’ not found
参考:https://www.pudn.com/news/62abee08ca7ee606dccbb408.html
JAVA错
执行javac,看提示如下
Command ‘javac’ not found, but can be installed with:
sudo apt install default-jdk # version 2:1.11-72build2, or
sudo apt install openjdk-11-jdk-headless # version 11.0.15+10-0ubuntu0.22.04.1
sudo apt install openjdk-17-jdk-headless # version 17.0.3+7-0ubuntu0.22.04.1
sudo apt install ecj # version 3.16.0-1
安装:sudo apt install openjdk-17-jdk-headless(我选择这个版本)