hzxie / voj

A cross-platform online judge system based on Spring MVC framework and ActiveMQ.
https://verwandlung.org
GNU General Public License v3.0
569 stars 121 forks source link

如何執行不同的批改指令? #57

Closed kerorojason closed 5 years ago

kerorojason commented 5 years ago

如果我的題目在編譯的時候需要使用其他jar檔, 要怎麼客製化特定題目的compile command,加上-cp library.jar ? 另外這個jar應該放在哪裡?

又或者,如果題目需要執行一個固定的Testmain.java, 讓他來呼叫使用者寫的class, 應該如何做到呢? 謝謝作者!

hzxie commented 5 years ago

如果你需要引用相同的jar文件,你可以在数据库里修改compile command。 如果你希望使用Testmain来调用一个使用者写的Class,你可以数据库里修改run command。 在执行Testmain时,你需要传递给它一个参数:使用者Class的名称,让其调用。

Sorry for the late reply. Hope the answer would help.

kerorojason commented 5 years ago

Thanks for your rapid reply! 如果我想要每一題都用不同的Testmain作批改, 應該會將{filename}加在我的每一份Testmain名稱前, 例如:

javac  /{filename}-Testmain.java {filename}.java 
java -cp {filename}

然後在系統目錄加上testmain的java檔, 但是我不太清楚每一題的{filename}是怎麼決定的? 麻煩你了謝謝作者!

hzxie commented 5 years ago

如果我没有记错,所有的源程序会放在/tmp目录下,这个目录可以在voj.properties中定义。 文件名是由Judger生成的随机文件名。为了防止用户预测出文件名从而进行进程的递归调用。