2009-02-19 43 views
5

Có bất kỳ tùy chọn nào khác ngoài Janino cho việc hợp nhất và thực thi mã Java trong v5 không? Tôi biết v6 có API biên dịch, nhưng tôi cần phải làm việc với máy ảo v5.Các tùy chọn để biên dịch động trong Java 5

Về cơ bản, tôi cần lấy một chuỗi chứa một lớp Java hoàn chỉnh, biên dịch nó và tải nó vào bộ nhớ.

+0

Có lý do nào khiến bạn không quan tâm đến Janino? Bạn chỉ đang tìm kiếm các tùy chọn khác hoặc có vấn đề cụ thể mà nó gây ra? – MBCook

+0

Janino là tuyệt vời, nhưng tôi đang tìm kiếm các tính năng ngôn ngữ nâng cao hơn mà không được hỗ trợ bởi Janino. Trên thực tế Janino là những gì chúng tôi hiện đang sử dụng. –

Trả lời

6

gì bạn muốn là một cái gì đó giống như Janino. Chúng tôi đã sử dụng nó trong nhiều năm. Bạn cung cấp cho nó (gần tiêu chuẩn) mã và nó cung cấp cho bạn các lớp học để bạn có thể sử dụng chúng. Nó thực sự có một vài chế độ khác nhau và hỗ trợ đường cú pháp 1,5 và auto-boxing và như vậy.

Nếu bạn gọi javac, không chỉ bạn sẽ phải sẵn sàng cho bất cứ điều gì, bạn sẽ phải xử lý việc đưa lớp vào đúng nơi hoặc tạo thêm trình nạp lớp.

Janino rất dễ dàng. Nó phải chính xác những gì bạn đang tìm kiếm.

+0

Ai đó không đọc câu đầu tiên của câu hỏi ... –

+0

Wow, bạn nói đúng. Làm thế nào tôi bỏ lỡ điều đó? – MBCook

+0

+1 chỉ vì bạn rất đam mê giải pháp mà bạn đã bỏ lỡ câu đầu tiên. –

2

Tất cả máy chủ ứng dụng thực hiện việc này cho JSP bao giờ hết, vì vậy rõ ràng điều đó là có thể. Thanh toán mã nguồn tomcat có thể?

5

Gọi javac programatically:

http://www.juixe.com/techknow/index.php/2006/12/12/invoke-javac-at-runtime/

 
    com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main(); 

    String[] options = new String[] 
    { 
     "-classpath", classpath, "-d", outputDir, filename 
    }; 

    javac.compile(options); 
+0

Điều này yêu cầu phải ghi ra một tệp. Thật không may là sự đa dạng của môi trường triển khai làm cho điều này trở nên nghiêm trọng. +1 Tuy nhiên, đối với khách hàng tiềm năng tốt. –

+0

Bạn cần kết quả cuối cùng như thế nào? – TofuBeer

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