2016-10-23 3 views
1

나는 꽤 혼란스러운 질문이 있습니다.java - JDK없이 클라이언트 측에서 코드 컴파일

나는 J AVA R untime E nviroment 및 J AVA D evelopement K을 사이의 차이를 알고있다.

ToolProvider.getSystemJavaCompiler() 메서드를 사용하여 코드 내에서 Java 코드를 컴파일하는 프로그램을 작성했습니다.

이제 클라이언트에 JDK가 설치되어 있지 않으면 클라이언트 측 코드를 컴파일 할 수 없다고 대답했습니다. 내 주요 질문은 어떻게 할 수 있습니까? 내 고객이 내 프로그램을 실행하기 위해 JDK를 컴퓨터에 설치하지 않아도됩니다.

미리 감사드립니다.

+0

JRE 만있는 가상 컴퓨터에서 os를 실행하고 컴파일 된 프로그램을 실행하십시오. – gkiko

+1

차이점을 알고 있다면 JRE가 사용자에게 충분하지 않을 것이라고 생각합니까? –

+0

JDK가없는 사용자의 컴퓨터에서 코드를 컴파일 할 수 있다고 생각하십니까? – SLaks

답변

0

시스템에서 컴파일하고 해당 Java 소스 파일의 클래스 파일을 누구에게나 배포해야합니다.

클래스 파일에는 JDK가 필요하지 않지만 클래스 파일을 실행하려면 해당 시스템에 JRE가 설치되어 있어야합니다.

+1

'getSystemJavaCompiler'를위한 것이 아닙니다. 질문을 읽으십시오. – SLaks

+0

편집을보세요 ... – NonameSL

+0

예전과 달랐습니다. :) 비록 JDK와 함께 제공되는 javac이없는 한, 간단한 용어로 코드를 컴파일 할 수 없습니다. 당신의 질문을 해결하기를 바랍니다. –

0

코드를 컴파일하려면 컴파일러가 필요하므로 사용자가 필요한 컴파일러를 사용할 수 없다면 번들링하면됩니다.

난 정말 그것을 포함하는 JAR 파일을 찾을 수 귀하의 코드와 함께 그 번들로, 엄밀히 말하면, 아마 비록 내가, 표준 javac 컴파일러를 번들하는 방법을 알고 말할 수 없습니다. 그러나 그러한 솔루션이 얼마나 강건한지는 알 수 없습니다.

하지만 필요에 따라 표준 javac이 필요하지 않을 수도 있습니다. 저기 바이트 코드 생성 라이브러리 거기 밖으로 더 많거나 적은 높은 수준의 기능입니다. 나는 개인적인 경험이 전혀없는 것을 추천하고 싶지는 않지만, 예로는 Byte Buddy 또는 ASM을들 수 있습니다. 아마도 ABCL을 사용할 수도 있습니다.

관련 문제