On 02/07/2019 08:43, Сергей Цыпанов wrote:
Hello,

one of key Java principles is "write once - run everywhere".
It seems to me that this code breaks this rule
------------------------------------

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;

public class Main {
   public static void main(String[] args) throws IOException {
     String path = Main.class
             .getClassLoader()
             .getResource("tsypanov/example/war-and-peace.json")
             .getPath();
Resource name -> URL -> URL path component.  A URL path component is not a file path. For file URLs then it encodes a file path (at least file paths that are not located on the network). There's a warning in the URL javadoc on this but maybe it's time to deprecate URL::getPath (in time we need to deprecate all of URL constructors and several methods but that is a topic for another day). For the example, change getPath to toURI so you get a URI rather than a String and it should work.

-Alan

Reply via email to