I am trying to get rJava to load the htmlunit java package (http://htmlunit.sourceforge.net/). rJava does not seem to be able to load and find the class in this package. This issue is the same on Windows 7 and Fedora 17 computers. rJava will load and init because I can see java.util.* classes, java.net.* classes, java.io.IOException, and cssparser classes. cssparser is required by htmlunit. Thanks for you help. Joe W. Byers The following is a script the reproduces the issue an contains command with results as comments. #rJava htmlunit problem on Windows and Linux (64 bit installs) require(rJava) # if using linux Fedora 17 or above, install htmlunit packages using yum or prefered #software updater. If using 16 or below a manual install of htmlunit and cssparser #packages is required to /usr/share/java. The following jar file names will need to # be modified for the system. #Windows #srchpath = 'C:\\path\\to\\jars'; #Linux #srchpath = '/usr/share/java'; # or other location where jars are installed #windows jarfile = c('cssparser-0.9.8.jar' ,'htmlunit-2.11.jar', 'htmlunit-core-js-2.11.jar'); #linux Fedora 17 or above, otherwise modify with version #jarfile = c('cssparser.jar' ,'htmlunit.jar', 'htmlunit-core-js.jar'); .jinit(); .jclassPath(); #[1] "C:\\R\\library\\rJava\\java" for (i in 1:length(jarfile)) { .jaddClassPath( file.path(srchpath, jarfile[i])); } .jclassPath(); #[1] "C:\\R\\library\\rJava\\java" #[2] "C:\\libs\\external\\jar\\cssparser-0.9.8.jar" #[3] "C:\\libs\\external\\jar\\htmlunit-2.11.jar" #[4] "C:\\libs\\external\\jar\\htmlunit-core-js-2.11.jar" attach( javaImport(packages = "com.steadystate.css.parser"), pos= 2, name = 'com.steadystate.css.parser'); attach( javaImport(packages = "com.gargoylesoftware.htmlunit"), pos= 2, name = 'htmlunit:com.gargoylesoftware.htmlunit'); attach( javaImport(packages = "java.io.IOException"), pos= 2, name = 'java.io.IOException'); attach(javaImport(packages = "java.net"), pos=2, name= 'java.net'); attach(javaImport(packages = "java.util"), pos=2, name= 'java.util'); #attach( javaImport(packages = "com.gargoylesoftware.htmlunit.html"), pos= 2, name = 'com.gargoylesoftware.htmlunit.html'); search(); # [1] ".GlobalEnv" # [2] "java.util" # [3] "java.net" # [4] "java.io.IOException" # [5] "htmlunit:com.gargoylesoftware.htmlunit" # [6] "com.steadystate.css.parser" # [7] "package:svSocket" # [8] "package:TinnR" # [9] "package:R2HTML" #[10] "package:Hmisc" #[11] "package:Formula" #[12] "package:survival" #[13] "package:splines" #[14] "package:tcltk" #[15] "package:rJava" #[16] "package:stats" #[17] "package:graphics" #[18] "package:grDevices" #[19] "package:utils" #[20] "package:datasets" #[21] "package:R.utils" #[22] "package:R.oo" #[23] "package:R.methodsS3" #[24] "package:methods" #[25] "SciViews:TempEnv" #[26] "Autoloads" #[27] "package:base" #test if java.net.URL methods seen URL .jmethods(java.net.URL) # [1] "public boolean java.net.URL.equals(java.lang.Object)" # [2] "public java.lang.String java.net.URL.toString()" # [3] "public synchronized int java.net.URL.hashCode()" # [4] "public final java.io.InputStream java.net.URL.openStream() throws java.io.IOException" # [5] "public java.lang.String java.net.URL.getPath()" # [6] "public java.lang.String java.net.URL.getAuthority()" # [7] "public java.lang.String java.net.URL.getQuery()" # [8] "public java.net.URI java.net.URL.toURI() throws java.net.URISyntaxException" # [9] "public java.lang.String java.net.URL.getFile()" #[10] "public java.lang.String java.net.URL.getHost()" #[11] "public java.lang.String java.net.URL.getProtocol()" #[12] "public java.net.URLConnection java.net.URL.openConnection() throws java.io.IOException" #[13] "public java.net.URLConnection java.net.URL.openConnection(java.net.Proxy) throws java.io.IOException" #[14] "public java.lang.String java.net.URL.getRef()" #[15] "public final java.lang.Object java.net.URL.getContent() throws java.io.IOException" #[16] "public final java.lang.Object java.net.URL.getContent(java.lang.Class[]) throws java.io.IOException" #[17] "public int java.net.URL.getPort()" #[18] "public java.lang.String java.net.URL.getUserInfo()" #[19] "public boolean java.net.URL.sameFile(java.net.URL)" #[20] "public int java.net.URL.getDefaultPort()" #[21] "public static void java.net.URL.setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory)" #[22] "public java.lang.String java.net.URL.toExternalForm()" #[23] "public final void java.lang.Object.wait() throws java.lang.InterruptedException" #[24] "public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException" #[25] "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException" #[26] "public final native java.lang.Class java.lang.Object.getClass()" #[27] "public final native void java.lang.Object.notify()" #[28] "public final native void java.lang.Object.notifyAll()" #test if cssparser methods seen for Token .jmethods(Token) # [1] "public java.lang.String com.steadystate.css.parser.Token.toString()" # [2] "public java.lang.Object com.steadystate.css.parser.Token.getValue()" # [3] "public static com.steadystate.css.parser.Token com.steadystate.css.parser.Token.newToken(int,java.lang.String)" # [4] "public static com.steadystate.css.parser.Token com.steadystate.css.parser.Token.newToken(int)" # [5] "public final void java.lang.Object.wait() throws java.lang.InterruptedException" # [6] "public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException" # [7] "public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException" # [8] "public boolean java.lang.Object.equals(java.lang.Object)" # [9] "public native int java.lang.Object.hashCode()" #[10] "public final native java.lang.Class java.lang.Object.getClass()" #[11] "public final native void java.lang.Object.notify()" #[12] "public final native void java.lang.Object.notifyAll()" #create a basic java vector object v <- new( Vector ) v #[1] "Java-Object{[]}" #create a basic java IOEXCEPTION object v <- new( java.io.IOException ) v #[1] "Java-Object{java.io.IOException}" #try find the basic vector class .jfindClass(Vector); #[1] "Java-Object{class java.util.Vector}" #try find the cssparser Token class .jfindClass(Token); #[1] "Java-Object{class com.steadystate.css.parser.Token}" #all of these worked try htmlunit .jfindClass(WebClient); #Error in inherits(cl, "jclassName") : object 'WebClient' not found #---------fails with class not found error .jmethods(WebClient); #Error in is(o, "jobjRef") : object 'WebClient' not found # #---------fails with class not found error #try full path .jmethods(com.gargoylesoftware.htmlunit.WebClient) #Error in is(o, "jobjRef") : # object 'com.gargoylesoftware.htmlunit.WebClient' not found # #same error [[alternative HTML version deleted]]