2009-04-23 65 views
9

Hiện tại tôi sử dụng lệnh 'ln' qua Runtime.exec(). Nó hoạt động tốt. Vấn đề duy nhất là để làm điều này ngã ba, chúng ta cần gấp đôi không gian heap của ứng dụng. Ứng dụng của tôi là một ứng dụng 64 bit có kích thước heap khoảng 10Gigs và do đó nó chạy ra khỏi không gian hoán đổi. Tôi không thể tìm thấy bất kỳ cấu hình nào có thể sửa lỗi này.Tạo liên kết cứng trong java

Tôi cũng không muốn sử dụng JNI cho tương tự. Ngoài ra tôi đã nghe một nơi nào đó rằng cơ sở này sẽ sớm được cung cấp trong java 7.

+0

chậm lại một chút. Bạn đang cố gắng làm gì, bạn đã thử cái gì, và điều gì đã xảy ra khi bạn thử nó? –

Trả lời

6

bạn có thể thử JNA thay cho JNI (JNA có một số lợi thế rõ ràng hơn JNI); có, hãy kiểm tra JSR 203

0

Bạn có thể sử dụng Windows thay vì UNIX? ;) Tôi tin rằng JDK7 sẽ sử dụng một cuộc gọi tương tự như CreateProcess thay vì ngã ba nếu có.

Một giải pháp thực tế hơn là tạo quy trình mới cho trẻ sau khi bắt đầu. Nếu bạn đang sử dụng một đống 10g, một quá trình Java nhỏ có thể sẽ không tệ đến vậy. Nhận quy trình đó (thông qua việc sử dụng luồng) để thực thi.

4

này là rất dễ dàng với JNA:

public interface CLibrary extends Library { 
    CLibrary INSTANCE = (CLibrary) 
     Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"), 
          CLibrary.class); 
    int link(String fromFile, String toFile); 
} 

public static void main(String[] args) { 
    CLibrary.INSTANCE.link(args[0], args[1]); 
} 

Biên dịch và chạy!

+0

Nó biên dịch, nhưng nó không chạy. Không phải dưới Windows, có nghĩa là. Tôi vẫn chưa biết về ma thuật mà JNA thực hiện, nhưng có vẻ như tên của chức năng tương ứng trong MSVCRT rất khác. –

+0

Theo http://stackoverflow.com/questions/6015006/whats-the-name-of-the-create-hard-link-function-in-msvcrt, hàm này được gọi là 'CreateHardLink' và nó nằm trong Kernel32, không có trong MSVCRT (có ý nghĩa). –

8

Thật dễ dàng trong Java 7 sử dụng createLink:

Files.createLink(Paths.get("newlink"), Paths.get("existing")); 
+2

Đây là tài liệu hướng dẫn: http://docs.oracle.com/javase/tutorial/essential/io/links.html –

Các vấn đề liên quan