2010-02-20 64 views
0

(Intel Mac OS 10.4.11,NetBeans IDE 6.8,SoyLatte 1.0.3)如何解決這個似乎與對話框相關的運行時錯誤?

儘管我目前正在修讀Java的大學課程,而且我的代碼基於來自Java教科書的幾個問題,喜歡使它完全清楚,這不是功課。這是自行分配用於學習目的,我的教授可能永遠不會看到這一點,更不用說爲它分級了。無論如何,我懷疑這是一個配置相關的問題,因爲我在校園裏的Vista機器上運行這個程序時沒有這樣的問題。假設我是對的,這個社區的任何政策都不應該有任何問題,因爲我不需要收到任何「回答」代碼來解決這個問題。

在NetBeans中,我的程序編譯並正常工作,但產生了一些運行時錯誤。任何想法可能會發生在這裏?

這裏是我的代碼:

import java.util.Scanner;  // Needed for console input. 
import javax.swing.JOptionPane; // Needed for dialog boxes. 

/** 
    This program performs the actions requested in questions 2.35 and 2.36 in the textbook. 
* @author Dan 
*/ 
public class Pages98To99 { 
    public static void main(String[]args){ 

     // Asks the user for what answer he/she wants to see. 
     System.out.println("Do you want to see the answer to 2.35 or 2.36?"); 
     Scanner keyboard = new Scanner(System.in); // Creates a scanner object. 
     double answer = keyboard.nextDouble(); 

     if (answer == 2.35){ 
      //2.35 
      JOptionPane.showMessageDialog(null, "Greetings Earthling."); 
      JOptionPane.showInputDialog("Enter a number.");} 

     else if (answer == 2.36){ 
      //2.36 
      String str = JOptionPane.showInputDialog("Please enter your age."); 
               // Gets age. 
      int age = Integer.parseInt(str);} /* Converts age from a string to an 
                integer.*/ 

     else 
      JOptionPane.showMessageDialog(null, "Go to another program."); 

     System.exit(0); // Ends the program 


    } 

} 

以下是通過NetBeans的產生的運行時錯誤:

2010-02-15 21:23:54.659 java[3891] CFLog (0): CFMessagePort: bootstrap_register(): failed 1103 (0x44f), port = 0xf203, name = 'java.ServiceProvider' See /usr/include/servers/bootstrap_defs.h for the error codes. 2010-02-15 21:23:54.660 java[3891] CFLog (99): CFMessagePortCreateLocal(): failed to name Mach port (java.ServiceProvider)

以下是使用故障排除終端會話都SoyLatte的JDK禮貌的較新版本(http://landonf.bikemonkey.org/static/soylatte/ ,它無法生成對話框)以及由Apple提供的較舊的作爲我的操作系統的一部分(這在NetBeans中也是如此)。

Last login: Sat Feb 20 00:12:55 on ttyp1 
Welcome to Darwin! 
Dans-MacBook:~ Dan$ cd /Volumes/Lexar/NetBeansProjects/MacBook-Made/test/;echo $PATH;java -version;javac -version;javac Pages98To99.java;java Pages98To99;PATH=/sw/bin:/sw/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin;java -version;javac -version;javac Pages98To99.java;java Pages98To99 
/sw/bin:/sw/sbin:/Applications/soylatte16-i386-1.0.3/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin 
java version "1.6.0_03-p3" 
Java(TM) SE Runtime Environment (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00) 
Java HotSpot(TM) Server VM (build 1.6.0_03-p3-landonf_19_aug_2008_14_55-b00, mixed mode) 
javac 1.6.0_03-p3 
Do you want to see the answer to 2.35 or 2.36? 
0 
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:169) 
     at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:68) 
     at sun.awt.X11.XToolkit.(XToolkit.java:89) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:169) 
     at java.awt.Toolkit$2.run(Toolkit.java:836) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:828) 
     at sun.swing.SwingUtilities2$AATextInfo.getAATextInfo(SwingUtilities2.java:120) 
     at javax.swing.plaf.metal.MetalLookAndFeel.initComponentDefaults(MetalLookAndFeel.java:1556) 
     at javax.swing.plaf.basic.BasicLookAndFeel.getDefaults(BasicLookAndFeel.java:130) 
     at javax.swing.plaf.metal.MetalLookAndFeel.getDefaults(MetalLookAndFeel.java:1591) 
     at javax.swing.UIManager.setLookAndFeel(UIManager.java:537) 
     at javax.swing.UIManager.setLookAndFeel(UIManager.java:577) 
     at javax.swing.UIManager.initializeDefaultLAF(UIManager.java:1331) 
     at javax.swing.UIManager.initialize(UIManager.java:1418) 
     at javax.swing.UIManager.maybeInitialize(UIManager.java:1406) 
     at javax.swing.UIManager.getDefaults(UIManager.java:656) 
     at javax.swing.UIManager.getString(UIManager.java:802) 
     at javax.swing.UIManager.getString(UIManager.java:819) 
     at javax.swing.JOptionPane.showMessageDialog(JOptionPane.java:592) 
     at Pages98To99.main(Pages98To99.java:29) 
java version "1.5.0_19" 
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-306) 
Java HotSpot(TM) Client VM (build 1.5.0_19-138, mixed mode, sharing) 
javac 1.5.0_19 
javac: no source files 
Usage: javac 
where possible options include: 
    -g       Generate all debugging info 
    -g:none     Generate no debugging info 
    -g:{lines,vars,source}  Generate only some debugging info 
    -nowarn     Generate no warnings 
    -verbose     Output messages about what the compiler is doing 
    -deprecation    Output source locations where deprecated APIs are used 
    -classpath   Specify where to find user class files 
    -cp     Specify where to find user class files 
    -sourcepath   Specify where to find input source files 
    -bootclasspath  Override location of bootstrap class files 
    -extdirs    Override location of installed extensions 
    -endorseddirs  Override location of endorsed standards path 
    -d    Specify where to place generated class files 
    -encoding  Specify character encoding used by source files 
    -source   Provide source compatibility with specified release 
    -target   Generate class files for specific VM version 
    -version     Version information 
    -help      Print a synopsis of standard options 
    -X       Print a synopsis of nonstandard options 
    -J     Pass directly to the runtime system 

Do you want to see the answer to 2.35 or 2.36? 
0 
2010-02-20 00:16:09.967 java[4618] CFLog (0): CFMessagePort: bootstrap_register(): failed 1103 (0x44f), port = 0xf103, name = 'java.ServiceProvider' 
See /usr/include/servers/bootstrap_defs.h for the error codes. 
2010-02-20 00:16:09.968 java[4618] CFLog (99): CFMessagePortCreateLocal(): failed to name Mach port (java.ServiceProvider) 
Dans-MacBook:/Volumes/Lexar/NetBeansProjects/MacBook-Made/test Dan$ 

下面是一個拙劣的嘗試獲取信息。從我的Java類的實驗室中的計算機的Windows Vista環境中完美地編譯和運行程序。是的,應該使用 - 版本。如果需要解決此問題,我會更新它。

Microsoft Windows [Version 6.0.6001] 
Copyright (c) 2006 Microsoft Corporation. All rights reserved. 

C:\Users\IRC111>java -showversion;javac -showversion 
Unrecognized option: -showversion;javac 
Could not create the Java virtual machine. 

C:\Users\IRC111>java -showversion 
java version "1.6.0_17" 
Java(TM) SE Runtime Environment (build 1.6.0_17-b04) 
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing) 

Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 

where options include: 
    -client  to select the "client" VM 
    -server  to select the "server" VM 
    -hotspot  is a synonym for the "client" VM [deprecated] 
        The default VM is client. 

    -cp 
    -classpath 
        A ; separated list of directories, JAR archives, 
        and ZIP archives to search for class files. 
    -D= 
        set a system property 
    -verbose[:class|gc|jni] 
        enable verbose output 
    -version  print product version and exit 
    -version: 
        require the specified version to run 
    -showversion print product version and continue 
    -jre-restrict-search | -jre-no-restrict-search 
        include/exclude user private JREs in the version search 
    -? -help  print this help message 
    -X   print help on non-standard options 
    -ea[:...|:] 
    -enableassertions[:...|:] 
        enable assertions 
    -da[:...|:] 
    -disableassertions[:...|:] 
        disable assertions 
    -esa | -enablesystemassertions 
        enable system assertions 
    -dsa | -disablesystemassertions 
        disable system assertions 
    -agentlib:[=] 
        load native agent library , e.g. -agentlib:hprof 
        see also, -agentlib:jdwp=help and -agentlib:hprof=help 
    -agentpath:[=] 
        load native agent library by full pathname 
    -javaagent:[=] 
        load Java programming language agent, see java.lang.instrument 

    -splash: 
        show splash screen with specified image 

C:\Users\IRC111>javac -showversion 
javac: invalid flag: -showversion 
Usage: javac 
use -help for a list of possible options 

C:\Users\IRC111>

我已經做了我可以google搜索,在我有限的時間去尋找這個網站是最好的,但我沒有運氣在我自己的解決這一點。除了超級用戶和AppleScript的一些經驗之外,我對Stack Overflow和編程都很新,所以請溫和。

+0

是否有任何理由使用對話框與開始從命令行提示的應用程序? – 2010-02-20 05:42:41

+0

我想出了通過接受控制檯輸入來結合兩個教科書對話框練習的想法,這樣我就可以在一個文件中執行它們,同時也可以使用控制檯輸入。 – Orion751 2010-02-20 21:00:08

回答

1

第一個錯誤與您的代碼無關。它可能是Netbeans配置錯誤或項目中的無效設置。如果你在命令行編譯你的代碼javac並運行它java你會沒事的。但是這並不能回答你的問題。如果我是你,我會嘗試重新安裝netbeans。

第二個錯誤顯示你的JVM試圖在XWindow系統下運行你的代碼。 XWindow是Linux的GUI系統。幸運的是,有一個適用於Mac的版本,它可以在您的雪豹DVD上使用。

+0

當我發佈我的答案後,我注意到你已經說過OS X 10.4 - 我沒有試過在其上運行Netbeans 6.8,不確定是否可能存在兼容性問題。我在Tiger上使用的Netbeans的最後一個版本是6.5 – e4c5 2010-02-20 06:28:27

+0

在我的問題中,我包含了一個終端會話,其中javac編譯該文件,但是java產生了錯誤。也許我沒有說清楚,因爲我堅持使用;一次執行所有命令。 我剛開始使用NetBeans,幾乎肯定我沒有更改默認設置。 – Orion751 2010-02-20 21:11:05

+0

你在說X11嗎?當我需要在Mac上使用OpenOffice時,我想我可能已經安裝了它。 xterm能夠編譯並運行我的代碼而不出問題。這是否意味着當我想通過終端運行涉及對話框的代碼時,我必須使用它? – Orion751 2010-02-21 04:53:34

相關問題