ورود

View Full Version : سوال: اخطار Uncompilable source code - Erroneous tree type:



ravand
شنبه 12 اردیبهشت 1394, 11:51 صبح
سلام
من از یه برنامه ی تبدیل تاریخ استفاده کردم.
package em;public class Em {
public static void main(String[] args) {
CalendarTool ct = new CalendarTool();
ct.setGregorianDate(2015,2,6);
String iranianDate = ct.getIranianDate();
System.out.println(iranianDate);
}
}
یه فایل هم داشت با نام CalendarTool.java که داخل پوشه ی em گذاشتم. ولی برنامه اخطار زیر را میده:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: em.CalendarTool
at em.Em.main(Em.java:19)
یعنی این خط رو مشخص میکنه:
CalendarTool ct = new CalendarTool();
یکی از دوستان گفت برنامه براش مشکلی نداره ولی نمیدونم چرا برای من مشکل داره؟
من از netbeans استفاده میکنم.
متشکرم.

محمد فدوی
شنبه 12 اردیبهشت 1394, 21:20 عصر
خب اینجوری که نمی‌شه نظر داد... ممکنه طرز استفاده از این کلاس به این شکلی که شما وارد کردید نباشه... به مستندات کلاس مورد نظرتون رجوع کنید ببینید مشکل کجاست.

ravand
شنبه 12 اردیبهشت 1394, 21:27 عصر
طریقه ی استفاده اش همینطوریه. رفیقم با اکلیپس امتحانش کرده و مشکلی نداشته. الان برای من با netbeans مشکل داره.

محمد فدوی
شنبه 12 اردیبهشت 1394, 23:06 عصر
بهرحال چیز زیادی نمی‌شه از روی کدتون فهمید.
شاید کلاس CalendarTool توی یه پکیج قرار داره و شما باید اول اون پکیج رو import کنید. مثلا:
import com.barnamenevis.somepackage;

شاید هم نسخه‌ی جاوای استفاده شده توی کلاس CalendarTool از نسخه‌ی جاوای شما بیشتر باشه که البته این احتمال بعیده...
چیزی که واضحه اینه که اگر بافرض اینکه نسخه‌ی JDK شما و دوستتون یکی باشه، اگر کدی که ایشون توی Eclipse اجرا می‌کنن شما عینا توی Netbeans اجرا کنید بدون شک هیچ خطایی رخ نمی‌ده.

ravand
یک شنبه 13 اردیبهشت 1394, 09:32 صبح
130821
اینم همون کلاس هست. خواستید امتحانش کنید.
متشکرم.

ahmad.mo74
یک شنبه 13 اردیبهشت 1394, 09:50 صبح
سلام. من تست کردم، مشکلی نداشت که !!!؟


public static void main(String[] args) {
System.out.println(new CalendarTool());
}


خروجی :


Sunday, Gregorian:[2015/5/3], Julian:[2015/4/20], Iranian:[1394/2/13]

ravand
یک شنبه 13 اردیبهشت 1394, 09:57 صبح
ببینید کدهای فایل Em.java من ایناست:
package em;
public class Em {
public static void main(String[] args) {
CalendarTool ct = new CalendarTool();
ct.setGregorianDate(2015,2,6);
String iranianDate = ct.getIranianDate();
System.out.println(iranianDate);
}
}

بعد این فایل Em.java و CalendarTool.java داخل این ادرس هست:

F:\java\bin\em\src\em
و این اخطار رو هم بهم میده:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any> at em.Em.main(Em.java:19)
روی پوشه ی em هم یک علامت تعجب هست.

ahmad.mo74
یک شنبه 13 اردیبهشت 1394, 10:08 صبح
خیلی از آدرسی که دادید سر درنیارودم!

یعنی اسم پروژه em هست بعد توی فولدر سورسش یه پکیج به اسم em هست؟

ولی این میتونه یه باگ توی نت بینز باشه :

http://stackoverflow.com/questions/2333285/java-lang-runtimeexception-uncompilable-source-code-what-can-cause-this
http://stackoverflow.com/questions/20165965/java-runtimeexception-uncompilable-source-code-erroneous-tree-type
http://stackoverflow.com/questions/22927644/java-exception-in-thread-main-java-lang-runtimeexception-uncompilable-source

اون کاری که گفتن رو انجام بدید (Compile on Save).

اگر بازم نشد یکبار از اول یه پروژه جدید بسازید. اون اخطاری هم که نت بینز میده (علامت تعجب) رو ببینید چی نوشته توش.

ravand
یک شنبه 13 اردیبهشت 1394, 10:29 صبح
یعنی اسم پروژه em هست بعد توی فولدر سورسش یه پکیج به اسم em هست؟
فولدر من em هست. اسم فایلم هم em هست.
اون ادرس هایی که دادید درست نگفته بود چیکار کنم؟


اون کاری که گفتن رو انجام بدید (Compile on Save).
من میام روی فایل Em.java راست کلیک میکنم و گزینه ی Run file رو میزنم. نمیدونم این گزینه ای که میگید کجاست؟


اگر بازم نشد یکبار از اول یه پروژه جدید بسازید. اون اخطاری هم که نت بینز میده (علامت تعجب) رو ببینید چی نوشته توش.
از اولم ساختم فایده ای نداشت.
وقتی ماوس رو میبرم روی پوشه ی em این اخطار رو نشون میده:

Java project in F:java\bin\em
Contains files with erroes.

ravand
یک شنبه 13 اردیبهشت 1394, 10:46 صبح
فهمیدم مشکل از چی بود! :لبخند: یه بی دقتی!
وقتی فایل CalendarTool.java را داخل پوشه ی em گذاشتم فراموش کردم این خط رو تغییر بدم:

package model;
باید اینطوری می نوشتم:

package em;
از همتون ممنونم. وبه خاطر بی دقتیم معذرت میخوام. :لبخند: