2011-10-17 44 views
6

Khi instatiating Velocity tôi nhận được lỗi này (được đăng chỉ là "do" -messages):lỗi Đăng nhập vận tốc trên hệ thống Linux

java.lang.RuntimeException: Velocity could not be initialized! 
Caused by: org.apache.velocity.exception.VelocityException: Error initializing log: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
Caused by: org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.Log4JLogChute with the current runtime configuration. 
Caused by: java.lang.RuntimeException: Error configuring Log4JLogChute : 
Caused by: java.io.FileNotFoundException: velocity.log (Permission denied) 

Đây là đoạn mã của tôi:

VelocityEngine ve = new VelocityEngine(); 
    ve.evaluate(context, writer, "org.apache.velocity.runtime.log.NullLogChute", this.templateString); 

Tại đầu tiên mã của tôi trông giống như sau:

runtimeServices = RuntimeSingleton.getRuntimeServices(); 
node = runtimeServices.parse(reader, templateName); 

Trên máy tính Windows của tôi nó hoạt động tốt, nhưng trên hệ thống Linux (Ubuntu 10.04) nó không hoạt động. Điều này post không giúp tôi nhiều, kể từ khi tôi đã không tìm thấy bất kỳ manh mối mà thư mục tôi phải cung cấp cho ghi-cho phép.

tôi phát hiện ra rằng đoạn mã sau đang làm việc cũng tại máy Linux:

String logPath = request.getRealPath("/velocity.log"); 
RuntimeSingleton.setProperty(RuntimeConstants.RUNTIME_LOG, logPath); 
runtimeServices = RuntimeSingleton.getRuntimeServices(); 
node = runtimeServices.parse(reader, templateName); 

Nó không phải là một giải pháp rất tốt đẹp, vì tôi không bao giờ có thể chắc chắn, nếu tôi có quyền ghi vào bối cảnh thật của tôi con đường. Điều tốt nhất là, chỉ cần tắt đăng nhập Velocity.

Cấu hình đăng nhập khác nhau nào tôi phải đặt? Có phải NullLogChute không hoạt động hoặc tôi có sử dụng nó không phù hợp không?

Cảm ơn trước!

Trả lời

0

Xin chào vấn đề là trên fs được bảo vệ trong quyền ghi. Infact trong stacktrace của bạn, bạn có:

java.io.FileNotFoundException: velocity.log (Permission denied) 

Vì vậy, nó được những thứ tốt quyết định nơi log vận tốc sẽ được ghi. Và bạn nói một từ tốt, bạn không thể biết nếu trong sản xuất bạn có thể viết cho một con đường cụ thể. Vì vậy, tốt hơn nên đặt đường dẫn đó trong một tệp thuộc tính mà sysadmin có thể sửa đổi theo ý muốn.

Vì vậy, hãy kiểm tra câu trả lời này cho bài đăng khác nếu có thể giúp bạn.

Liên kết here

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