Browse Source

Merge pull request #5461 from richardkchapman/java-classpath-fixes

HPCC-10186 Better Java Support for JAR Files and the ClassPath

Reviewed-by: Gavin Halliday <ghalliday@hpccsystems.com>
Gavin Halliday 11 years ago
parent
commit
9d2f8dd4ed
2 changed files with 8 additions and 5 deletions
  1. 7 4
      plugins/javaembed/javaembed.cpp
  2. 1 1
      testing/regress/ecl/javaimport.ecl

+ 7 - 4
plugins/javaembed/javaembed.cpp

@@ -304,13 +304,16 @@ public:
             jmethodID URLclsMid = JNIenv->GetMethodID(URLcls, "<init>","(Ljava/lang/String;)V");
             checkException();
             StringArray paths;
-            paths.appendList(classPath, ENVSEPSTR);
+            paths.appendList(classPath, ";");  // NOTE - as we need to be able to include : in the urls, we can't use ENVSEP here
             jobjectArray URLArray = JNIenv->NewObjectArray(paths.length(), URLcls, NULL);
             ForEachItemIn(idx, paths)
             {
-                StringBuffer testpath;
-                testpath.append(paths.item(idx));
-                jstring jstr = JNIenv->NewStringUTF(testpath.str());
+                StringBuffer usepath;
+                const char *path = paths.item(idx);
+                if (!strchr(path, ':'))
+                    usepath.append("file:");
+                usepath.append(path);
+                jstring jstr = JNIenv->NewStringUTF(usepath.str());
                 checkException();
                 jobject URLobj = JNIenv->NewObject(URLcls, URLclsMid, jstr);
                 checkException();

+ 1 - 1
testing/regress/ecl/javaimport.ecl

@@ -1,5 +1,5 @@
 import java;
-string jcat(string a, string b) := IMPORT(java, 'JavaCat.cat:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;' : classpath('/opt/HPCCSystems/classes/'));
+string jcat(string a, string b) := IMPORT(java, 'JavaCat.cat:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;' : classpath('/opt/HPCCSystems/classes'));
 
 integer jadd(integer a, integer b) := IMPORT(java, 'JavaCat.add:(II)I');
 integer jaddl(integer a, integer b) := IMPORT(java, 'JavaCat.addL:(II)J');