URISyntaxException from launcher when jars reside in windows Maven repository
-----------------------------------------------------------------------------

                 Key: TUSCANY-574
                 URL: http://issues.apache.org/jira/browse/TUSCANY-574
             Project: Tuscany
          Issue Type: Bug
          Components: Java SCA Core
         Environment: Win XP, J2RE 1.5.0 IBM Windows 32 build pwi32dev-20060511 
(SR2)
            Reporter: Matthew Sykes
            Priority: Trivial


When attempting to run maven from various samples directories:

[INFO] [surefire:test]
[INFO] Surefire report directory: 
C:\cygwin\home\sykesm\oss-code\tuscany\java\samples\sca\calculator\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running calculator.CalculatorTestCase
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.38 sec <<< 
FAILURE!
testCalculator(calculator.CalculatorTestCase)  Time elapsed: 0.31 sec  <<< 
ERROR!
java.lang.IllegalArgumentException
        at java.net.URI.create(URI.java:854)
        at 
org.apache.tuscany.core.launcher.Launcher.getInstallDirectory(Launcher.java:177)
        at 
org.apache.tuscany.core.launcher.Launcher.bootRuntime(Launcher.java:104)
        at org.apache.tuscany.test.SCATestCase.setUp(SCATestCase.java:40)
        at calculator.CalculatorTestCase.setUp(CalculatorTestCase.java:32)
        at junit.framework.TestCase.runBare(TestCase.java:125)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at 
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210)
        at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135)
        at 
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:129)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at 
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:225)
        at 
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:747)
Caused by: java.net.URISyntaxException: Illegal character in path at index 18: 
file:/C:/Documents and 
Settings/sykesm/.m2/repository/org/apache/tuscany/core/1.0-SNAPSHOT/core-1.0-SNAPSHOT.jar
        at java.net.URI$Parser.fail(URI.java:2821)
        at java.net.URI$Parser.checkChars(URI.java:2994)
        at java.net.URI$Parser.parseHierarchical(URI.java:3078)
        at java.net.URI$Parser.parse(URI.java:3026)
        at java.net.URI.<init>(URI.java:590)
        at java.net.URI.create(URI.java:852)

This appears to be due to how the Launcher teases out the directory containing 
the Tuscany code.  Since the default location for the maven repository on 
windows has spaces in the directory names, the "URI" that was used was not 
valid.  In order to get past this I made a very simple change:

$ svn diff
Index: sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java
===================================================================
--- sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java       
(revision 425392)
+++ sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java       
(working copy)
@@ -168,13 +168,15 @@
         if (!"jar".equals(url.getProtocol())) {
             throw new IllegalStateException("Must be run from a jar: " + url);
         }
+
         String jarLocation = url.toString();
         jarLocation = jarLocation.substring(4, jarLocation.lastIndexOf("!/"));
         if (!jarLocation.startsWith("file:")) {
             throw new IllegalStateException("Must be run from a local 
filesystem: " + jarLocation);
         }
+        jarLocation = jarLocation.substring(5);
 
-        File jarFile = new File(URI.create(jarLocation));
+        File jarFile = new File(jarLocation);
         return jarFile.getParentFile().getParentFile();
     }
 }

This may not be an appropriate change but it did resolve the problem I was 
seeing.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to