I’m trying to make a path to a place on the computer with the System.getenv function and it returns a \ in the path not a / which is what I need. I have tried with the replaceAll method but it returns a error:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at Launcher.start(Launcher.java:75)
at Launcher.Download(Launcher.java:55)
at Launcher.<init>(Launcher.java:31)
at Launcher.main(Launcher.java:17)
the line of code is:
InputStream OS = Runtime.getRuntime().exec(new String[]{"java",System.getenv("APPDATA").replaceAll("\\", "/")+"/MS2-torsteinv/MS2-bin/no/torsteinv/MarsSettlement2/Client/Client.class"}).getErrorStream();
You need to double the backslash:
The canonical regex is indeed
\\, but in Java regexes are in strings, and in Java strings, a literal backslash needs to be escaped with another backslash. Hence\\becomes"\\\\".