< prev index next >
src/jdk.jshell/share/classes/jdk/internal/jshell/tool/JShellTool.java
Print this page
@@ -38,10 +38,13 @@
import java.io.Reader;
import java.io.StringReader;
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleFinder;
import java.lang.module.ModuleReference;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
@@ -2997,15 +3000,22 @@
regenerateOnDeath = false;
scanner = new Scanner(cmdin);
} else {
Path path = toPathResolvingUserHome(filename);
String resource;
- scanner = new Scanner(
- (!Files.exists(path) && (resource = getResource(filename)) != null)
- ? new StringReader(resource) // Not found as file, but found as resource
- : new FileReader(path.toString())
- );
+ if (Files.exists(path)) {
+ scanner = new Scanner(new FileReader(path.toString()));
+ } else if ((resource = getResource(filename)) != null) {
+ scanner = new Scanner(new StringReader(resource));
+ } else {
+ try {
+ var url = new URL(filename);
+ scanner = new Scanner(url.openStream());
+ } catch (MalformedURLException mue) {
+ throw new FileNotFoundException(filename);
+ }
+ }
}
run(new ScannerIOContext(scanner));
return true;
} catch (FileNotFoundException e) {
errormsg("jshell.err.file.not.found", context, filename, e.getMessage());
< prev index next >