בעיות ב java תחת מערכת unix

niro a

New member
בעיות ב java תחת מערכת unix

שלום לכולם, כתבתי תוכנית של java תחת מערכת windows והיא רצה באופן תקין לאחר מכן העברתי את התוכנית באמצעות ftp למערכת unix אשר איתה אני עובד בשליטה מרחוק , התוכנית מצליחה לעבור קימפול ,אך כאשר אני מפעיל אותה מופיע לי ההודעה הבאה: java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:1 25) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:140) at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvi ronment.java:62) at sun.awt.motif.MToolkit.<clinit>(MToolkit.java:72) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:140) at java.awt.Toolkit$2.run(Toolkit.java:712) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:703) at java.awt.Toolkit.getEventQueue(Toolkit.java:1483) at java.awt.EventQueue.invokeLater(EventQueue.java:776) at javax.swing.SwingUtilities.invokeLater(SwingUtilities.java:1152) at javax.swing.Timer.post(Timer.java:538) at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:193) at javax.swing.TimerQueue.run(TimerQueue.java:229) at java.lang.Thread.run(Thread.java:536) תודה רבה לכולם.
 

IP yuval

New member
אין צורך לקמפל שוב על מערכת

היוניקס... זה ג'אווה (שמהודרת לbytecode שרץ בכל מקום). הבעיה היא שאתה לא יכול לפתח חלון בX של המערכת, וזה ממש לא קשור אל ג'אווה.
 

niro a

New member
תודה אבל לא ממש הבנתי

בתוכנית אין לי שום פתיחת חלון,אלה שאני מנסה להריץ תוכנית שרת לקוח יחסית פשוטה, אני חושב שהוא לא מצליח להריץ את action event אבל אני לא בטוח. הכל מקרה אני ממש תקוע עם זה! help
 

selalerer

New member
הקוד Java משתמש באיזשהי יכולת...

..."חלונאית" שדורשת שהמע' הגרפית של הUNIX תהיה פעילה (הX Server) וכנראה שהוא לא.
 

niro a

New member
לא היתה דרישה להפעלה גרפית מצד unix

לא השתמשתי השום פונקציה גרפית של java ולכן הודעת השגיאה אינה מובנת. בעייה זו חוזרת על עצמה לחרי כל הרצה (לדעתי של פונקציה timer )
 

selalerer

New member
זה כבר תלוי במימוש של הVM.

יכול להיות שהVM שיש על המכונת UNIX הזאת מתרגם איזשהו חלק בפקודה שעשית, או אפילו משלב את זה בתוכנית באופן אוטומטי, לשליחת איזשהי פקודה לX Server או רק להתחברות אליו. והיות ואין X Server (אין?) על המכונה, אז ההתחברות נכשלת.
 

DadleFish

New member
התוכנה שלך עושה שימוש

ב-TimerQueue של Swing, ומכיוון ש-SWING היא ספריה גרפית, היא דורשת קיום GUI פוטנציאלי. אם אתה רץ מתוך CONSOLE (כמו שאני מניח שאתה עושה), לא תוכל לעבוד. אתה צריך לעבוד עם משהו שונה מה-TimerQueue של Swing. לא יודע מה עשית שם, אבל משהו לא מתקתק.
 

niro a

New member
יש הצעות

אתה מכיר פונקציה שעובדת כמו timer אשר הunix לא יטען עבורה סיפרייה גרפית?
 

RBA

New member
מה ניסית לעשות עם timer?

מצאתי לך שימוש פשוט ב -timer ו timerTask. מקווה שהלינק יוכל לעזור. במידה ולא, נסה להסביר מה רצית לעשות בתוכנית המקורית שלך ואז אולי אוכל לסייע יותר.
 

DadleFish

New member
וטיפ כללי,

ישנם כל מיני מקרים שבהם תראה ש-class מסוים ממומש גם בספריה שהיא java סטנדרטית, וגם בספריות אחרות שהן פחות סטנדרטיות, או פחות "בסיסיות" - כמו SWING למשל. תמיד כדאי לך לשאוף להשתמש ב-class הכי פשוט ובסיסי, כל עוד הוא נותן לך את מה שאתה צריך - אחרת אתה למעשה עושה יותר ממה שאתה צריך לעשות, בדיוק כמו במקרה שלך, שבו אותחל GUI למרות שאין לך כל צורך בכך.
 
אין צורך להחליף, נסה headless

אפשר לעקוף את הצורך בשרת X -- נסה להפעיל את ה JVM עם הפרמטר הבא:
-Djava.awt.headless=true​
חפש בגוגל על headless jdk 1.4. אם זה לא עוזר אתה יכול להרים Xvfb שיהיה לך כאילו X server רץ.
 
אמת... מדובר פה על 1.3?

בכל מקורי, אפשר להרים שרת X וירטואלי וזהו
 

voguemaster

New member
אתה מביא פתרונות בהפוכה ? ../images/Emo6.gif

תפסיק להתחכם! במקום זה לך תראה איזה מימוש מגניב ל-MUTEX כתבתי!
אפשר לבנות על זה וליצור אפילו עץ מחלקות של אובייקטי סינכרון עבור ג'אווה. בסדר, לא יעיל כמו לעבוד ישירות עם אובייקטים של קרנל אבל זה עובד ועובד טוב
 
למעלה