解決 Netbeans 下 Tomcat 服務器無法啟動的問題


  最近在學習 Java Web 編程,由於 Java 官方(現在應該是 Oracle)的 IDE NetBeans 集成了各種框架,所以為了入手簡單,我就是用它了。

  在 Netbeans 中新建一個 Java Web 工程后,點擊運行測試發現不停的彈出 Tomcat 的用戶名密碼驗證框,然后輸入在 Netbeans 中配置的用戶名和密碼,幾次(應該是 5 次)之后,Apache Tomcat 窗口就會輸出如下的警告信息:

WARNING: An attempt was made to authenticate the locked user "用戶名"

然后在控制台顯示:

部署錯誤: 尚未授予訪問 Tomcat 服務器的權限。請在服務器管理器的 Tomcat 定制器中設置 "manager-script" 角色的正確用戶名和口令。
有關詳細信息, 請查看服務器日志。

總而言之就是無法正常。

  Google 一下這條警告信息,發現都沒有說到點子上,也沒有找到有效的解決方法。后來我自己摸索解決了,就在這里和大家分享一下。

  其實控制台上給出的錯誤提示已經把原因說的很清楚了,只是新手的話,恐怕一下子也無法理解其中的含義,而網絡上的高手有不會意識到居然會在這個地方錯誤,才導致很多新手在這里迷惑。錯誤提示說:“請在服務器管理器的 Tomcat 定制器中設置 "manager-script" 角色的正確用戶名和口令。有關詳細信息, 請查看服務器日志。” 解決方法很簡單,就是在 Tomcat 中創建一個角色為“manager-script”的用戶。

  創建方法如下:在 Tomcat 目錄下,找到 conf 文件夾的 tomcat-users.xml 文件,打開之后發現這個文件幾乎是空的,因為絕大部分的內容被注釋掉了。復制下列代碼到這個文件中,覆蓋原來的內容。代碼如下:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

事實上,如上內容正是網絡上的給出的,但是問題仍然沒有解決。但是看到這里,我想應該自己也能解決了,如果還不能自己想到解決方法,那就不要學編程了。如上內容雖然創建了三個用戶,並且各自具有不同的角色(role),但是並沒有 Netbeans 所要求的“manager-script”,所以再添加一個角色為“manager-script”的用戶名,並填到 Netbeans 中的 Tomcat 服務器屬性設置中,問題自然就解決了。例如:

<role rolename="manager-script"/>
<user username="eSHOPPING" password="1234" roles="manager-script"/>

   值得注意的是,可能有人會發現在編輯好 tomcat-users.xml 文件后無法保存,其實這正是才生這個問題的根本原因:編輯這個文件是需要管理員權限(即本文所討論的問題是在 Windows 下發生的)。究其原因,是因為把 Tomcat 發行包放到了一個需要管理員權限才能修改的位置,比如:系統盤的 Program Files 目錄下。解決方法有兩個,一是為 Tomcat 搬家,二是關掉 Windows 的 UAC 提示(滑桿拉到最底下然后重啟)。我選擇的是第二種。我想之所以會出現本文所討論的問題,大概也是這個原因,即 Netbeans 在自動配置時沒有權限修改這個文件,否則的會就會自動創建一個角色為“manager-script”的用戶。當然,這只是我的猜測,有興趣的可以測試一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM