2016-10-04 8 views
0

MEAN 스택을 사용하여 온라인 코딩 테스트 애플리케이션을 수행하고 있습니다. nodejs의 솔루션을 찾고 사용자가 편집기에 입력하고 제출하는 Java 코드를 컴파일합니다. 사용자는 테스트 입력을 입력하고 실행 한 다음 출력을 확인할 수 있습니다.온라인 Java 코딩 테스트 : nodejs에 제출 된 java 코드를 컴파일하십시오.

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

내가 간부 인 방법으로 솔루션 아래에 건너왔다

, 그러나 컴파일하기 전에 사용자가 제출 자바 코드에서 jar 파일을 만드는 작업이 포함됩니다으로이 솔루션은 가능한 소리가 나지 않는다.

이 문제에 대한 해결책이 더 있습니까?

답변

0

Java, C, C++, C#, Python 등과 같은 여러 언어를 컴파일 할 수있게 해주는 nodeJS 라이브러리 compilex과 함께 해결책을 찾았습니다. 또한 사용자 입력을 지원합니다.

2

을 감안할 때 하나의 파일로 자신의 소스 코드를 제출하는 사용자 :

당신이 할 수있는 것은 단순히 자바로 실행, javac의를 사용하여 실행 클래스로 소스를 컴파일합니다.

컴파일 :

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

실행 :

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

그것은 작동하지만 보안에 미치는 영향에주의합니다. 기본적으로 사용자가 자신의 서버에서 신뢰할 수없는 코드를 실행할 수 있습니다. 권한이없는 사용자로 코드를 실행하십시오. 어떤 것에 대한 읽기/쓰기 액세스가없고 네트워크 액세스가 전혀 필요하지 않습니다! 또한 CPU 공유를 제한하고 적절하게 실행을 시간 초과합니다.

+0

실행 및 테스트 할 코드에 사용자 입력을 전달하는 방법은 무엇입니까? –