[
https://issues.apache.org/jira/browse/ACCUMULO-3380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Johannes Bauer updated ACCUMULO-3380:
-------------------------------------
Description:
When I run the MiniAccumuloCluster in a bigger test environment (lots of
dependencies to other librarys), it happens, that the classpath gets very long,
in my example about 30,000 bytes.
When the MiniAccumuloCluster starts other processes, it gets the classpath in
the {{getClasspath()}} function of {{MiniAccumuloClusterImpl}} .
It basically takes the classpath of the running process, and adds the temp
directory and hands it to the new process with the {{-cp}} option in line 249
(1.6.0) :
{code}
argList.addAll(Arrays.asList(javaBin, "-Dproc=" + clazz.getSimpleName(),
"-cp", classpath));
{code}
In my example, adding the tmp-directory just enlarges the length of the
classpath over the 32,768-limit for the java-commandline. My test ends with the
error
{code}
java.io.IOException: Cannot run program "C:\Program
Files\Java\jdk1.7.0_67\jre\bin\java": CreateProcess error=206, The filename or
extension is too long
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:277)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:300)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl.start(MiniAccumuloClusterImpl.java:442)
at
org.apache.accumulo.minicluster.MiniAccumuloCluster.start(MiniAccumuloCluster.java:72)
{code}
I recommend to change the implementation to putting the classpath into the
variable {{CLASSPATH}}, as described in
http://unserializableone.blogspot.de/2007/10/solution-to-classpath-too-long-aka.html
was:
When I run the MiniAccumuloCluster in a bigger test environment, it happens,
that the classpath gets very long, in my example about 30,000 bytes.
When the MiniAccumuloCluster starts other processes, it gets the classpath in
the {{getClasspath()}} function of {{MiniAccumuloClusterImpl}} .
It basically takes the classpath of the running process, and adds the temp
directory and hands it to the new process with the {{-cp}} option in line 249
(1.6.0) :
{code}
argList.addAll(Arrays.asList(javaBin, "-Dproc=" + clazz.getSimpleName(),
"-cp", classpath));
{code}
In my example, adding the tmp-directory just enlarges the length of the
classpath over the 32,768-limit for the java-commandline. My test ends with the
error
{code}
java.io.IOException: Cannot run program "C:\Program
Files\Java\jdk1.7.0_67\jre\bin\java": CreateProcess error=206, The filename or
extension is too long
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:277)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:300)
at
org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl.start(MiniAccumuloClusterImpl.java:442)
at
org.apache.accumulo.minicluster.MiniAccumuloCluster.start(MiniAccumuloCluster.java:72)
{code}
I recommend to change the implementation to putting the classpath into the
variable {{CLASSPATH}}, as described in
http://unserializableone.blogspot.de/2007/10/solution-to-classpath-too-long-aka.html
> MiniAccumuloCluster does not work with long classpath under Windows.
> ---------------------------------------------------------------------
>
> Key: ACCUMULO-3380
> URL: https://issues.apache.org/jira/browse/ACCUMULO-3380
> Project: Accumulo
> Issue Type: Bug
> Components: mini
> Affects Versions: 1.6.0, 1.6.1
> Environment: MS Windows
> Reporter: Johannes Bauer
>
> When I run the MiniAccumuloCluster in a bigger test environment (lots of
> dependencies to other librarys), it happens, that the classpath gets very
> long, in my example about 30,000 bytes.
> When the MiniAccumuloCluster starts other processes, it gets the classpath in
> the {{getClasspath()}} function of {{MiniAccumuloClusterImpl}} .
> It basically takes the classpath of the running process, and adds the temp
> directory and hands it to the new process with the {{-cp}} option in line 249
> (1.6.0) :
> {code}
> argList.addAll(Arrays.asList(javaBin, "-Dproc=" + clazz.getSimpleName(),
> "-cp", classpath));
> {code}
> In my example, adding the tmp-directory just enlarges the length of the
> classpath over the 32,768-limit for the java-commandline. My test ends with
> the error
> {code}
> java.io.IOException: Cannot run program "C:\Program
> Files\Java\jdk1.7.0_67\jre\bin\java": CreateProcess error=206, The filename
> or extension is too long
> at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
> at
> org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:277)
> at
> org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl._exec(MiniAccumuloClusterImpl.java:300)
> at
> org.apache.accumulo.minicluster.impl.MiniAccumuloClusterImpl.start(MiniAccumuloClusterImpl.java:442)
> at
> org.apache.accumulo.minicluster.MiniAccumuloCluster.start(MiniAccumuloCluster.java:72)
> {code}
> I recommend to change the implementation to putting the classpath into the
> variable {{CLASSPATH}}, as described in
> http://unserializableone.blogspot.de/2007/10/solution-to-classpath-too-long-aka.html
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)