سؤال

ولدي الطريقة التي يحصل دعا في بداية برنامجي، وأنه يعمل بشكل جيد عند تشغيل الجرة، ولكن عند تشغيل ملف JNLP أنه تعطل.

public void newImg(String i)
{
    try
    {
        File file = new File(i);
        img = ImageIO.read(file);
    }
}

وIMG هو bufferedImage، بالمناسبة.

هل كانت مفيدة؟

المحلول

والاحتمالات هي المسار الذي منحنا إلى ملف، أو الأذونات، لا تتطابق. وضع المنشئ الملفات في كتلة المحاولة، وقبض على استثناء، ومعرفة ما هو عليه.

وينبغي أن ننظر بشيء من هذا القبيل:

try {
    File file =  new File(i);
    img = ImageIO.read(file);
} catch (Exception ex) {
    // You probably want to open the java console, or use a logger
    // as a JNLP may send stderr someplace weird.
    Systemm.err.println("Exception was: ", ex.toString());
}

ورمز لديك لا تفعل أي شيء مع استثناء.

وأنت قد ترغب في النظر في الاستثناءات خيط في البرنامج التعليمي جافا.

تحديث

وانظر تعليقاتي. وحاولت فقط شيء وأكدت ما كنت أفكر - كود مع try {} ولا catch أو finally لن حتى ترجمة. إذا كان هذا هو حقا رمز كنت تعتقد أنك تعمل مع، وربما كنت قد تم تحميل ملف الدرجة القديم. لم جمعت هذه واحدة.

$ cat Foo.java 
public class Foo {
     public void tryit() {
         try {
             File f = new File(null);
         }
     }
}
$ javac Foo.java
Foo.java:3: 'try' without 'catch' or 'finally'
         try {
         ^
1 error
$ 

نصائح أخرى

وربما لديك عدم تحميل الصور الخاصة بك بشكل صحيح. لا تستخدم الموقع النسبي من الملف. هذا وسوف يكون مختلفا عن كل OS. صورتك في JAR التي يجب أن يتم تحميل بشكل صحيح مثل هذا:

URL url = this.getClass().getResource("image.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(url);

وهذا سوف تحميل دعا image.jpg والملف الذي يقع في نفس الموقع مثل الطبقة. يمكنك أيضا استخدام أشياء مثل File.pathSeparator إذا به في موقع آخر.

استخدم واحدة من هاتين الطريقتين لتحميله كمورد:

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String) <لأ href = "HTTP: //java.sun كوم / javase / 6 / مستندات / المعهد / جافا / انج / Class.html # getResourceAsStream (java.lang.String) "يختلط =" نوفولو noreferrer "> http://java.sun.com/javase/6/docs /api/java/lang/Class.html#getResourceAsStream(java.lang.String)

تأكد من أن لديك الصحيح اسم الملف / المسار.

تأكد من لديك الوصول إلى الملفات إلى نظام الملفات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top