Here’s a very simple java program to print the first line of a file:
import java.io.*
public class test {
public static void main(String[] args) throws IOException {
System.out.print(new BufferedReader(new FileReader(args[0])).readLine());
}
}
When I run this program under cygwin and pass it the name of a symbolic link, it prints the contents of the symbolic link, not the target of that link:
$ echo foo > testfile
$ ln -s testfile symlink_to_testfile
$ java test testfile
foo
$ java test symlink_to_testfile
!<symlink> ?t e s t f i l e
How do I convince java to follow the symlink? I was hoping there was something simpler than implementing the redirect myself.
I don’t think there is a simple answer to this. As various pages state, Cygwin is an application suite rather than an OS, and Sun does not support Java on Cygwin.
However, it may be possible to build JDK 6 for Cygwin from the source code. Certainly, this page implies that it is possible. Whether this gives you a JDK that understands Cygwin style symbolic links is anyones guess … 🙂