2013-04-23 24 views
0

我不是很熟悉Java或Java小程序,但我必須解決這個問題。如何調試java小程序

自從JRE 7 Update 21開始,applet就會在所有瀏覽器中引發eceptions。

enter image description here

我需要調試應用程序,因爲錯誤沒有給出任何線索(應用程序正在運行了多年,現在,它的客戶不能使用它了之後最新的JRE更新)。

所以這個applet被用作.NET應用程序中的JAR文件。 這就是所謂的與一些代碼的javascript:

<html> 
<head> 
    <script type="text/javascript"> 
     var i = 0; 
     var path = "\\\\\\\\reaktorm\\\\Outgoing\\\\test"; 
     var ext = ".tif"; 
     var fullPath = ""; 

     function nextImage() { 
      if (i==2) { 
       alert("There is no next image in collection!"); 
      } else { 
       i++; 
       displayImage(); 
      } 
     } 

     function previousImage() { 
      if (i<1) { 
       alert("There is no previous image in collection!"); 
      } else { 
       i--; 
       displayImage(); 
      } 
     } 

     function displayImage() { 
      //fullPath= path + (i<10?"0"+i:i) + ext; 
      fullPath= path + ext; 
      alert(fullPath); 
      document.webViewer.display(fullPath); 
     } 
    </script> 
</head> 
<body> 
    <div style="width:100%; height:100%;"> 
     <applet name="webviewer" archive="..\webviewer.jar" code="my.webviewer.WebViewerApplet.class" width="100%" height="100%"> 
      <param name="java_arguments" value="-Xmx512m"> 
      <param name="image_source" value="C:\test\test.tif"> 
     </applet> 
    </div> 
    <form id="testForm" name="testForm" style="display:block"> 
     <input type="button" onClick="previousImage();" value="previous" /> 
     <input type="button" onClick="nextImage();" value="next" /> 
    </form> 
</body> 
</html> 

所以,如果我把這個HTML文件,然後在瀏覽器中打開它,我得到的上部的RuntimeException。

現在我想調試,以找到此異常的原因。 我有eclipse,源代碼和JAR導出。

我已經通過啓動嘗試遠程調試:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar webviewer.jar 

然後我試圖在調試選項連接到使用「遠程Java應用程序」,在日食通過連接到的locahost:5005,但我得到拒絕連接。

請有人能指出我的解決方案 - 我如何在Eclipse中進行調試?

+0

也許你有同樣的問題:http://stackoverflow.com/questions/17786669/java-1-7-0-u25-applet-debugging-with-eclipse/17941467#17941467 – Oli 2013-07-30 08:11:20

回答

1

在Eclipse中,導航到Applet類,然後單擊Eclipse菜單運行,然後調試方式的Java Applet。 Eclipse將以調試模式啓動你的applet。

+1

這是顯而易見的,但小程序需要一些輸入,這是通過我的.NET應用程序中的JavaScript完成的。 HTML只調用編譯java applet的JAR文件,所以我不知道這將如何工作? Applet獨自工作...但我需要一個工作場景來顯示Web瀏覽器中的小程序(這是異常發生時)。 – no9 2013-04-25 09:11:25

+1

試試[這個答案](http://stackoverflow.com/a/6049278/572834)。您必須設置Java插件進行遠程調試,然後您可以使用Eclipse調試器連接到它。或者,您可以擴展插件功能,以便在HTML頁面上調用由JavaScript調用的函數。 'ExceptionInInitializerError'意味着一個類[評估靜態初始化程序時發生異常](http://stackoverflow.com/a/3375834/572834)。因此,僅用HTML中的'image_source'參數實例化主applet類就足夠了。 – 2013-04-25 14:09:37

+0

最有可能的是,你得到'SecurityException'因爲你的applet不允許訪問'C:\ test \ test.tif'。小程序可能不允許訪問用戶的計算機文件系統。這個'SecurityException'就是你得到'ExceptionInInitializerError'的原因。 – 2013-04-25 14:13:08

0

The java console會給你一個完整的堆棧跟蹤你的小程序拋出的任何異常。您可以按照鏈接的Oracle文檔中的說明啓用它。

+0

問題是關於如何調試一個applet,而不是如何獲取日誌。 – 2017-07-17 11:36:46