Test de codage java en ligne: compiler le code java soumis dans nodejs


Je fais une application de test de codage en ligne en utilisant MEAN stack. Vous cherchez une solution dans nodejs, pour compiler le code Java que l'utilisateur entre dans l'éditeur et soumet. L'utilisateur peut entrer l'entrée de test, exécuter et vérifier la sortie.

Je suis tombé sur la solution ci-dessous avec la méthode exec,

exec('java -jar userCode.jar',function (error, stdout, stderr){
});

Mais cette solution ne semble pas faisable car elle implique de créer un fichier jar à partir du code java soumis par l'utilisateur avant la compilation.

Existe-t-il une meilleure solution pour cela problème?

Author: Madhura KM, 2016-10-04

2 answers

Étant donné que l'utilisateur soumettra son code source en un seul fichier:

Ce que vous pouvez faire est de compiler la source dans une classe exécutable en utilisant javac, puis de l'exécuter simplement avec java.

Compilation:

javac -cp /path/to/libs/jar/files MyProgram.java

Exécution:

java -cp .;/path/to/libs/jar/files  MyProgram

Cela fonctionnera mais méfiez-vous des implications de sécurité de cela. Vous autorisez fondamentalement l'utilisateur à exécuter du code non approuvé sur votre propre serveur. Assurez-vous simplement d'exécuter du code en tant qu'utilisateur non privilégié, sans accès en lecture / écriture à quoi que ce soit, et non accès au réseau du tout! Limitez également les partages de cpu et expirez l'exécution le cas échéant.

 2
Author: Atrakeur, 2016-10-04 15:23:26

J'ai trouvé une solution avec la bibliothèque NodeJS compilex, qui permet de compiler plusieurs langages comme Java, C, C++, C#, Python etc. Il prend également en charge l'entrée de l'Utilisateur.

 0
Author: Madhura KM, 2016-10-05 10:51:16