如何让hustoj支持Java判题

问题描述

在hustoj中输入Java代码后,报错:

答案错误 AC:0%
查看错误信息:
Execution error, USE_DOCKER:1 !
>  You need to install compiler VM or runtime for your language.

需要安装JDK编译器。

解决方案

1. 修改Dockerfile安装Java环境

新安装的系统需要 重启才能判java,jdk是安装在docker容器中的,外部安装jdk不会起作用。先重启试试,不行,再进行下一步。

修改jdk的版本,以root身份到/home/judge/src/install目录下修改Dockfile文件(内有注释),然后运行bash docker.sh

编辑文件:sudo vim /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

然后重启服务器。

2. 解决编译错误问题

再次在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 个错误

3. 进一步解决方案

  • JDK版本问题:目前只支持sun原版jdk和openjdk,其他jdk暂不能保证支持。
  • Ubuntu系统安装源问题
    • 执行  sudo apt-get install openjdk-7-jdk  
    • 报错:E: Package ‘openjdk-7-jdk’ has no installation candidate,是因为Ubuntu16.04的安装源已经默认没有openjdk7了。推荐使用ubutnu STL 20.04 或者24.04
    • 可以选择安装其他版本:
      sudo apt install default-jdk     # version 2:1.11-72build2
      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
      

注意事项

  • Java使用OpenJDK 11.0.9.1编译,命令为javac -J-Xms32m -J-Xmx256m Main.java
  • 如果您的代码中没有public class,请将入口类命名为Main

    如果问题仍未解决, 可以点击下方名片协助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星卯教育tony

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值