2013-04-04 42 views
9

Tôi tiếp tục gặp lỗi này trong khi chạy và tôi không biết nguyên nhân gây ra lỗi đó. Nó tin rằng có một tập tin bị thiếu?Lỗi thời gian chạy Java lạ - currency.data

Caused by: java.io.FileNotFoundException: C:\Program Files\Java\jdk1.7.0_07\lib\currency.data

currency.data là gì và ai cũng có thể đề nghị tại sao điều này xảy ra, JDK của tôi không phải là cũ vì chúng ta đang ở trong 7u17 bây giờ.

Exception in thread "AWT-EventQueue-0" java.lang.InternalError 
    at java.util.Currency$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.util.Currency.<clinit>(Unknown Source) 
    at java.text.DecimalFormatSymbols.initialize(Unknown Source) 
    at java.text.DecimalFormatSymbols.<init>(Unknown Source) 
    at java.text.DecimalFormatSymbols.getInstance(Unknown Source) 
    at java.text.NumberFormat.getInstance(Unknown Source) 
    at java.text.NumberFormat.getNumberInstance(Unknown Source) 
    at java.util.Scanner.useLocale(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 
    at java.util.Scanner.<init>(Unknown Source) 
    at ciphor.CiCompile$7.actionPerformed(CiCompile.java:458) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.io.FileNotFoundException: C:\Program Files\Java\jdk1.7.0_07\lib\currency.data (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    at java.io.FileInputStream.<init>(Unknown Source) 
    ... 48 more 

Tôi đang chạy chương trình của mình bằng môi trường JDK, tôi đã kiểm tra thư mục jre7 và currency.data có mặt ở đó! Tại sao nó chỉ xuất hiện trong thư mục jre?

+0

Có thể đáng để gỡ cài đặt/cài đặt lại bạn jdk/jre? – assylias

+0

@assylias Tôi sẽ cập nhật JDK của mình lên phiên bản mới nhất và xem tệp đó có xuất hiện kỳ ​​diệu hay không. – Ciphor

+0

Tôi nghĩ rằng nó được cho là nằm trong tập tin rt.jar ... – assylias

Trả lời

0

tôi thấy rằng currency.data được tìm thấy trong cả hai:

C:\Program Files\Java\jdk1.7.0_17\jre\lib

hoặc

C:\Program Files\Java\jdk1.7.0_07\lib

Đối với một số lý do, khi tôi thực hiện chương trình của tôi, Java không biết để tìm một thư mục sâu hơn.

0

Trong những ngày skool cũ, Sun đã chỉ định rằng JAVA_HOME nên trỏ đến JDK_HOME/jre nếu JDK được cài đặt thay vì chỉ JRE.

Sự khác biệt này đã dần dần bị xói mòn vì lý do tương tự mà 'exalator' đang trở thành một cách phát âm có thể chấp nhận được cho 'thang cuốn': ở khắp mọi nơi.

Ở bất kỳ tỷ lệ một số ứng dụng cũ vẫn giả JAVA_HOME là gốc rễ của JRE

0

JDK 1.7.0_43 không có currency.data dưới lib /, chỉ trong vòng jre/lib. Điều đó buộc tôi phải thay đổi các kịch bản xây dựng để sử dụng JDK để biên dịch và sau đó sử dụng JRE cho các bài kiểm tra đơn vị. Trừ khi có một cách tốt hơn.

3

Tôi đã gặp vấn đề tương tự. Nó được gây ra bởi một cuộc xung đột giữa các phiên bản Java ("JAVA_HOME" đã được đặt thành 1.7 và thuộc tính "-Djava.home" được đặt thành 1.6).

Tôi đã sử dụng mvn để xây dựng dự án và trong biến môi trường MAVEN_OPTS tùy chọn "java-home" được thành lập với giá trị WRONG:

MAVEN_OPTS = -Xmx512m -XX:MaxPermSize=256m "-Djava.home=C:\Program Files\Java\jdk1.6.0_35\jre" 

Chỉ ĐÚNG nó để:

MAVEN_OPTS = -Xmx512m -XX:MaxPermSize=256m 

cũng kiểm tra các biến môi trường khác của bạn:

MAVEN_OPTS 
JAVA_HOME 
9

tôi nhận được một lỗi tương tự và điều này chỉ là để giúp mọi người khác, những người có thể rơi vào cái bẫy tương tự :)

Lỗi:

java.lang.InternalError: java.io.FileNotFoundException: null/lib/currency.data (No such file or directory) 

Điều này là do tôi đặt các thuộc tính toàn cầu mà biến là một điều rất thông minh để làm.

System.setProperties(new Properties()); 

Hệ thống thuộc tính này được dân cư với dữ liệu rất quan trọng bao gồm:

  • path.separator
  • user.dir
  • file.encoding
  • file.separator
  • java. io.tmpdir

Vì vậy, về cơ bản không làm điều trên trừ khi bạn biết những gì bạn đang làm.

Nếu bạn muốn một một tài sản, làm điều này thay vì:

System.getProperties().put("SOME_KEY", "SOME_VALUE"); 

hoặc

Map myCustomMapOfProps = ... 
System.getProperties().putAll(myCustomMapOfProps); 
+0

ha ha ha cười vào bản thân mình về những gì tôi vừa làm 'System.setProperty (new Properties());': D –

+0

@AnandRockzz, Đã cho tôi nhiều giờ để tìm ra lý do ;-) – rjdkolb

+0

Thật ngu ngốc khi Java không cung cấp cho bạn một cách để thêm các thuộc tính mà không có clobbering tất cả mọi thứ bạn có. –

1

Đây là solition tôi. Bạn có thể thêm này trong mã của bạn:

System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.8.0_60\\jre"); 

Bạn phải thay thế con đường của bạn phiên bản jdk.

+0

Nối \\ jre là giải pháp của tôi, cảm ơn – Dani

0

Tôi đã gặp sự cố tương tự đối với webapp được triển khai trong wildfly 10 sau khi cài đặt jre mới trong khi máy chủ đang chạy. Khởi động lại máy chủ đã giải quyết được sự cố.

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