< 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 >