Vra

Ek gebruik die klas javax.tools.JavaCompiler (jdk6) om 'n bron lêer saam te stel, maar die bron lêer is afhanklik van 'n paar jar-lêer. Hoe om die classpath van die javax.tools.JavaCompiler stel?

Was dit nuttig?

Oplossing

Die javax.tools.JavaCompiler # getTask () metode neem 'n options parameter wat dit moontlik maak om set samesteller opsies. Die volgende boodskap beskryf 'n maklike manier om dit te stel ten einde toegang tot die roep classpath program se:

  

Jy moet die standaard instel   java lêer bestuurder om te weet oor die   jar lêers (s) - jy die samesteller gebruik   opsies argument om dit te doen.

     

By verstek die Java samesteller voorwerp   lyk net om te weet oor die verstek   plekke vir bootclasspath, extdirs   en endorseddirs dopgehou in terme   van sy classpath.

     

Jy moet die roeping program se voeg   huidige classpath om die Java samesteller   Byvoorbeeld se wat op die kry geslaag   die standaard lêer bestuurder, wat sal   vind dan klasse in die pot lêers.

     

Hier is hoe ek dit doen in die samesteller   wrapper ek geskryf

List<String> optionList = new ArrayList<String>();
// set compiler's classpath to be same as the runtime's
optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path")));

// any other options you want
optionList.addAll(Arrays.asList(options));

JavaCompiler.CompilationTask task = compiler.getTask(out,jfm,diagnostics,optionList,null,jfos);

Al wat jy nodig het dan is die behoorlike classpath stel wanneer die bestuur van die roeping program.

Ander wenke

Dieselfde probleem by my opgekom het onlangs, uiteindelik ek het twee regstellings. Jy kan die klas pad óf stel deur te roep StandardJavaFileManager.setLocation (StandardLocation.CLASS_PATH, "YOUR_CLASS_PATH") of Compiler.getTask (ARG_0, ARG_1, ARG_2, CLASS_PATH_OPTIONS, net soos die eerste antwoord hier gepos sê.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top