[Rd] [R] can't load rJava in R 2.8.1 on Windows XP
simon.urbanek at r-project.org
Mon Jan 26 18:25:24 CET 2009
thanks for the analysis, I have updated rJava to check for the
truncation and issue a warning with the kb link when detected. I have
also made sure to not use file.path since it's using the wrong
separator. The updated rJava version (0.6-2) should be available on
On Jan 26, 2009, at 8:13 , Duncan Murdoch wrote:
> 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
>>>>  "C:\\Program Files\\Java\\jre1.6.0_07\\bin\\client"
>>>>  "C:\\Program Files\\Java\\jre1.6.0_07/bin"
>>>>  "C:\\Program Files\\Java\\jre1.6.0_07/bin/client"
>>>>  "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 \
>>> 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
>> 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
>> 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
> says that this is a problem in Windows XP SP2 and Windows Server
> 2003, and provides a fix for those systems.
> Duncan Murdoch
> R-devel at r-project.org mailing list
More information about the R-devel