Duncan,
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
CRAN soon.
Thanks,
Simon
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
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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel