不久前,因毕设选的OJ判题相关的题目,在网上找了许多优秀的Java开源项目,其中详细学习了HOJ。
相信看到这篇内容的读者,大都和我最初学这个项目时一样,不清楚怎样在Windows上部署(网上现有资源基本都只是对数据端运行在windows,判题服务运行在虚拟机、Docker或者服务器中),这样对学习判题服务实现或者条件不允许的同学不是很友好!这篇文章将详细介绍一种纯windows部署方式(仅开发过程使用——go-judge运行在windows会存在运行空间占用大等情况)
项目准备
项目拉取地址:
https://gitee.com/himitzh0730/hoj.git
后端包结构:
- api包为项目所需pojo
- DataBackup包为后端业务
- JudgeServer包为判题业务
Nacos安装
在Nacos官网下载相关安装包(建议下载与作者相同版本,不然数据库配置会出现相关问题)或采用Docker安装 。(下载安装过程自行百度,不过多赘述)
配置修改(naocs/conf/application.properties)
在(nacos/bin)下启动后在浏览器访问:
localhosthttp://localhost:8848/nacos
账号密码均为nacos,出现页面则访问成功!
Nacos中密码加密后数据(nacos)
$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu
下载配置完成的版本(⭐推荐):
在学习过程中,我配置过新版本Nacos(新版nacos的数据库与作者给的不一致,需要更改表),可直接下载使用,相关放在个人公众号【HC Spaces】上,有需要的可直接获取。
Redis、MySQL安装
自行百度······
Databackup
该部分为项目数据端,所有前端请求均发送至此。本部分主要修改bootstrap.yml、application-dev(prod).yml、Constant.java几个文件。
bootstrap.yml:只用修改nacos配置
application-dev(prod).yml:修改MySQL、Redis、邮箱、VJ账号
Constant.java(top/hcode/hoj/utils/Constants.java)
修改完成后即可启动项目。
JudgeServer
该部分为判题服务相关实现,需要修改bootstrap.yml、language.yml、Constant.java、LanguageConfigLoader.java、SandboxRun.java。
bootstrap.yml
language.yml:语言配置
此配置以C++、Java为例,其他类似!
---
language: C++
src_path: main.cpp
exe_path: main.exe
compile:
command: E:/tools/gcc/mingw64/bin/g++.exe -fmax-errors=1 -std=c++14 {src_path} -lm -o {exe_path}
env: default
maxCpuTime: 10s
maxRealTime: 20s
maxMemory: 512mb
run:
env: default
command: ./{exe_path}
---
language: Java
src_path: Main.java
exe_path: Main.jar
compile:
env: java_compile
command: C:\\Windows\\System32\\cmd /c E:/java/JDK/bin/javac -encoding utf-8 {src_path} && E:/java/JDK/bin/jar -cvf {exe_path} *.class
maxCpuTime: 10s
maxRealTime: 20s
maxMemory: 512mb
run:
env: java_run
command: E:/java/jDK/bin/java.exe -Dfile.encoding=UTF-8 -cp ./{exe_path} Main
Constant.java(top/hcode/hoj/util/Constants.java)
LanguageConfigLoader.java(top/hcode/hoj/judge/LanguageConfigLoader.java):配置语言路径
SandboxRun.java(top/hcode/hoj/judge/SandboxRun.java)
默认开发环境无需修改。
SandBox
可Docker部署或前往go-judge官网下载windows版本!同时也可前往个人公众号【HC Spaces】上直接下载获取。
前端
前端部分无需修改内容,可直接下载运行,建议与作者相关软件版本一致!
也可尝试在配置文件添加:SET NODE_OPTIONS=--openssl-legacy-provider (版本问题),不一定能解决!
到此为止,hoj后端以全部配置完成,可成功运行!初次写相关文章,若在文章存在问题请指正,同时文章为一时兴起所写,可能存在忽略的位置!后期会逐渐完善。
HC Spaces支持题目获取、个人优化项目hcoj源码获取、安装部署等技术支持~