怎样在hustoj中支持Java判题

2022年9月18日 | 分类: 【技术】

【样题】

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(我选择这个版本)