27 |
27 |
28 import java.io.File; |
28 import java.io.File; |
29 import java.io.FileNotFoundException; |
29 import java.io.FileNotFoundException; |
30 import java.io.IOException; |
30 import java.io.IOException; |
31 import java.io.PrintWriter; |
31 import java.io.PrintWriter; |
|
32 import java.nio.file.Path; |
32 import java.util.ArrayList; |
33 import java.util.ArrayList; |
33 import java.util.Collection; |
34 import java.util.Collection; |
34 import java.util.Collections; |
35 import java.util.Collections; |
35 import java.util.Map; |
|
36 import java.util.Objects; |
36 import java.util.Objects; |
37 |
37 |
38 import javax.tools.JavaFileManager; |
38 import javax.tools.JavaFileManager; |
39 import javax.tools.JavaFileObject; |
39 import javax.tools.JavaFileObject; |
|
40 import javax.tools.StandardJavaFileManager; |
|
41 import javax.tools.StandardLocation; |
40 |
42 |
41 import com.sun.javadoc.*; |
43 import com.sun.javadoc.*; |
42 import com.sun.tools.javac.file.JavacFileManager; |
44 import com.sun.tools.javac.file.JavacFileManager; |
43 import com.sun.tools.javac.main.CommandLine; |
45 import com.sun.tools.javac.main.CommandLine; |
44 import com.sun.tools.javac.main.Option; |
46 import com.sun.tools.javac.main.Option; |
45 import com.sun.tools.javac.file.BaseFileManager; |
47 import com.sun.tools.javac.file.BaseFileManager; |
|
48 import com.sun.tools.javac.platform.PlatformDescription; |
|
49 import com.sun.tools.javac.platform.PlatformUtils; |
46 import com.sun.tools.javac.util.ClientCodeException; |
50 import com.sun.tools.javac.util.ClientCodeException; |
47 import com.sun.tools.javac.util.Context; |
51 import com.sun.tools.javac.util.Context; |
48 import com.sun.tools.javac.util.List; |
52 import com.sun.tools.javac.util.List; |
49 import com.sun.tools.javac.util.ListBuffer; |
53 import com.sun.tools.javac.util.ListBuffer; |
50 import com.sun.tools.javac.util.Log; |
54 import com.sun.tools.javac.util.Log; |
350 } |
354 } |
351 if (fileManager instanceof BaseFileManager) { |
355 if (fileManager instanceof BaseFileManager) { |
352 ((BaseFileManager) fileManager).handleOptions(fileManagerOpts); |
356 ((BaseFileManager) fileManager).handleOptions(fileManagerOpts); |
353 } |
357 } |
354 |
358 |
|
359 String platformString = compOpts.get("-release"); |
|
360 |
|
361 if (platformString != null) { |
|
362 if (compOpts.isSet("-source")) { |
|
363 usageError("main.release.bootclasspath.conflict", "-source"); |
|
364 } |
|
365 if (fileManagerOpts.containsKey(Option.BOOTCLASSPATH)) { |
|
366 usageError("main.release.bootclasspath.conflict", Option.BOOTCLASSPATH.getText()); |
|
367 } |
|
368 |
|
369 PlatformDescription platformDescription = |
|
370 PlatformUtils.lookupPlatformDescription(platformString); |
|
371 |
|
372 if (platformDescription == null) { |
|
373 usageError("main.unsupported.release.version", platformString); |
|
374 } |
|
375 |
|
376 compOpts.put(Option.SOURCE, platformDescription.getSourceVersion()); |
|
377 |
|
378 context.put(PlatformDescription.class, platformDescription); |
|
379 |
|
380 Collection<Path> platformCP = platformDescription.getPlatformPath(); |
|
381 |
|
382 if (platformCP != null) { |
|
383 if (fileManager instanceof StandardJavaFileManager) { |
|
384 StandardJavaFileManager sfm = (StandardJavaFileManager) fileManager; |
|
385 |
|
386 sfm.setLocationFromPaths(StandardLocation.PLATFORM_CLASS_PATH, platformCP); |
|
387 } else { |
|
388 usageError("main.release.not.standard.file.manager", platformString); |
|
389 } |
|
390 } |
|
391 } |
|
392 |
355 compOpts.notifyListeners(); |
393 compOpts.notifyListeners(); |
356 |
394 |
357 if (javaNames.isEmpty() && subPackages.isEmpty() && isEmpty(fileObjects)) { |
395 if (javaNames.isEmpty() && subPackages.isEmpty() && isEmpty(fileObjects)) { |
358 usageError("main.No_packages_or_classes_specified"); |
396 usageError("main.No_packages_or_classes_specified"); |
359 } |
397 } |