我将一个UNC路径作为参数传递给Jar。有时UNC路径可能包含空间。所以我尝试用双引号包装UNC路径,但得到ArrayIndexOutOfBoundsException
。
例如,以下格式对我来说很好..
xx.jar //someloc/someloc/ Arg2 Arg3 ..
但低于格式ArrayIndexOutOfBoundsException
。
xx.jar "//some loc/some loc/" Arg2 Arg3 ..
我不确定为什么在使用双引号时抛出错误。有没有办法通过没有引号的空格传递UNC路径?或者我有任何错误吗?
示例代码..
public class Ab
{
static String[] inputparam = new String[20];
public static void main(String[] args) {
org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.OFF);
inputparam = args;
abc();
}
public static void abc() throws IOException, NamingException, URISyntaxException {
String HadoopConfigPath = inputparam[0];
Configuration config = new Configuration();
config.set("fs.defaultFS", HadoopURI);
config.addResource(new File(HadoopConfigPath + "HadoopConfigFiles\\core-site.xml").toURI().toURL());
config.addResource(new File(HadoopConfigPath + "HadoopConfigFiles\\hdfs-site.xml").toURI().toURL());
config.addResource(new File(HadoopConfigPath + "HadoopConfigFiles\\mapred-site.xml").toURI().toURL());
config.addResource(new File(HadoopConfigPath + "HadoopConfigFiles\\yarn-site.xml").toURI().toURL());
答案 0 :(得分:0)
首先,你的问题质量非常低。你没有提供足够的信息来回答它,但我们可能会有一些假设。
我们假设您的代码已编译。根据您的代码,inputparameters
应该被称为inputParameters
并且实际上不应该使用args
至少有1个元素,因此不可能抛出{{1}调用索引IndexOutOfBoundsException
时。重要的事情!它是0
而不是``Indexoutofboundsexception`。
现在让我解释一下为什么你的代码不能编译,你可能会运行不同的东西。
IndexOutOfBoundsException
内声明方法abc
。更重要的是,你不能在另一个方法中声明任何方法,除非它是main
!Lambda
没有关闭!最后但并非最不重要的一点是,当你引用它们时,你不必在你的操作系统中逃避斜线......为什么你会“逃避”非反斜杠?
{
答案 1 :(得分:-1)
我找到了问题并自行解决了。
我实际上在末尾传递了带有额外反斜杠的UNC路径。例如,我正在传递const play = R.forEach(R.when(R.prop('on'), i => playInstrument(time, i.duration)))
play(sequenceInstruments)
而不是xx.jar "\\some loc\som loc\"
如果我们在UNC Path的末尾使用反斜杠,那么当我们不使用双引号时它没有给出任何问题。但是当我们在最后使用双引号和反斜杠时它会抛出错误。
为了解决这个问题,我添加了一个额外的反斜杠,如下面的
xx.jar "\\some loc\some loc"