[Rd] [R] can't load rJava in R 2.8.1 on Windows XP

Duncan Murdoch murdoch at stats.uwo.ca
Mon Jan 26 14:13:57 CET 2009


On 1/26/2009 7:04 AM, Duncan Murdoch wrote:
> Dieter Menne wrote:
>> Duncan Murdoch <murdoch <at> stats.uwo.ca> writes:
>>
>>   
>>> I don't know what's going wrong on your system.  I added a browser() 
>>> call to the .onLoad function in R/windows/FirstLib.R on my system, and I 
>>> see it successfully gets JAVA_HOME from the registry.  It gets a number 
>>> of other files, then adds these paths to my PATH variable.  I've used 
>>> strsplit() to separate them for viewing.
>>>
>>> [14] "C:\\Program Files\\Java\\jre1.6.0_07\\bin\\client"
>>> [15] "C:\\Program Files\\Java\\jre1.6.0_07/bin"
>>> [16] "C:\\Program Files\\Java\\jre1.6.0_07/bin/client"
>>> [17] "C:\\Program Files\\Java\\jre1.6.0_07/jre/bin/client"
>>>
>>> I believe LoadLibrary needs paths to be specified with backslashes, so 
>>> you might be able to fix things on your system by changing the file.path 
>>> calls in that function to use fsep="\\" instead of the default "/".
>>>     
>>
>> Thanks for your help. 
>>
>> I think I tracked it down. It has nothing to do with rJava, but
>> rather with Sys.getenv(). Looks like this function truncates around 1024
>> characters, and my path is very long due to Visual Studio + Delphi
>> + SQL Server.
>>
>> See the printout below. Note that the last entry should read \\Delphi,
>> and that more entries are coming in my system path.
>> This also explains why only some people have the problem.
>> No workaround found yet. I keep this message here for other people who 
>> have the problem, but possibly this is more for R-devel to be continued.
>>   
> 
> Yes, I've moved this to R-devel.
> 
> If this is an R problem, it's in Sys.setenv:  putting a very long string 
> and then starting a shell shows the truncated string, but within the 
> shell it's possible to set a much longer one.
> 
> However, I don't see a fixed buffer size in the internal R code, so this 
> looks like a problem in the run-time.  The docs on MSDN say that the 
> system maintains separate user environment variables and system 
> environment variables, and the system ones are limited to 1024 
> characters:  so this could be our problem.  Our _wputenv call may be 
> trying to set a system environment variable, and having it truncated.  
> (There's also an overall limit of 32767 chars for all environment 
> variables, but I'd guess you're hitting the 1024 byte limit.)
> 
> The docs also say there's a SetEnvironmentVariable API function as of 
> Win2k, which is our minimal platform these days, so maybe switching to 
> that would solve the problem.  I'll give it a try, but probably not today.

One more followup:  This article

http://support.microsoft.com/kb/906469

says that this is a problem in Windows XP SP2 and Windows Server 2003, 
and provides a fix for those systems.

Duncan Murdoch



More information about the R-devel mailing list