從現有的主題(What tomcat requires JDK or JRE?和Why does Tomcat require JDK installed?)中,我瞭解到Tomcat 5.5以後不需要安裝JDK來編譯jsp文件,因爲它使用了自己的捆綁Eclipse Java編譯器。但是,當tomcat運行java字節碼時,它確實需要JRE。但是在安裝Tomcat時,我們只需要指定JVM的位置。爲了編譯和運行Java代碼,我們只需要將JDK文件夾下的bin文件夾添加到路徑環境中即可。但是JDK 9不再包含JRE文件夾。相反,在JDK文件夾之外有一個獨立的JRE文件夾。運行已編譯的jsp代碼時,Tomcat仍然如何捕獲JRE? Tomcat中的哪個配置文件捕獲了這個?謝謝!哪個配置文件告訴Tomcat已安裝的JRE的位置?
1
A
回答
1
但安裝Tomcat的過程中,我們只需要指定JVM的位置
指定JVM的位置隱含指定JRE的位置,因爲JVM是JRE目錄中找到結構體。
要編譯並運行Java代碼,我們只需要將JDK文件夾下的bin文件夾添加到路徑環境中即可。
添加JDK bin
文件夾的路徑,意味着你可以運行java
和javac
命令。命令文件的位置隱式指定了要使用的JDK的位置,因此也指定了JVM。沒有配置文件。
在Windows 64位Java 5到Java 8中,JVM位於%JAVA_HOME%\jre\bin\server\jvm.dll
。
在Windows 64位Java 9中,JVM位於%JAVA_HOME%\bin\server\jvm.dll
中。
但是JDK 9不再包含JRE文件夾。相反,在JDK文件夾之外有一個獨立的JRE文件夾。
除非您告訴它不要創建單獨的JRE文件夾,否則所有Java版本的JDK安裝程序都將創建一個JDK文件夾和一個JRE文件夾。在這方面,Java 9與舊版Java版本沒有區別。
當運行編譯後的jsp代碼時,Tomcat仍然如何捕獲JRE?
Tomcat本身是用Java編寫的,所以Tomcat沒有找到Java。運行Tomcat的是Java。
相關問題
- 1. 如何獲取當前選擇的已安裝JRE的位置?
- 2. iOS獲取已安裝的配置配置文件
- 3. liberty配置文件的默認安裝位置
- 4. 安裝配置文件
- 5. Drupal安裝配置文件
- 6. Slicehost安裝配置文件
- 7. Xamarin沒有安裝配置文件匹配已安裝的iOS簽名身份
- 8. 配置文件的PhpMyAdmin安全警告
- 9. 獲取已安裝的配置文件的列表
- 10. Angular-cli的安裝位置在哪裏?
- 11. 定義安裝文件的位置
- 12. 請告訴我配置時
- 13. 無法在iPad上安裝配置文件 - 「配置文件...無法安裝」
- 14. XCode 3.2.3不會顯示已安裝的配置文件
- 15. Gem文件中的Gem安裝配置
- 16. 是否可以告訴NSIS設置配置文件中列出的文件?
- 17. 以編程方式配置Eclipse安裝的JRE
- 18. 將安全配置文件放置在WAR中的位置?
- 19. 我的webapp的日誌文件在Linux Tomcat 7安裝中的位置?
- 20. 文本文件後位置的tomcat deployement
- 21. 安裝安裝時的配置文件轉換
- 22. 安裝位置缺少頭文件
- 23. Visual Studio安裝項目 - 在兩個位置的一個文件
- 24. 在Spring/Tomcat中,jndi查找引用哪個配置文件?:
- 25. 春天配置文件的正確位置在哪裏?
- 26. Capistrano的配置文件的位置
- 27. 編寫Drupal 7安裝配置文件
- 28. 通過webkit安裝iphone配置文件
- 29. 合併安裝配置文件
我在問Tomcat如何知道JRE所在的位置,以便運行.class文件從.jsp編譯。我不是問Java如何運行.class(我知道javac和java參與Java的情況)。我們只告訴Tomcat JVM所在的位置,即%JAVA_HOME%\ bin \ server \ jvm.dll。但在Java 9中,JRE不在JDK文件夾內(即在%JAVA_HOME%之外)。另請注意,對於JDK 9,JDK文件夾不包含JRE文件夾。例如,C:\ Program Files \ Java \ jdk-9.0.1和C:\ Program Files \ Java \ jre-9.0.1,前者不包括後者。 – Peng
你讀過我的答案了嗎? JVM和所有Java Runtime Library都是Java 9 JDK的一部分。當然,它們不在「JRE」子文件夾中,但JRE中的所有內容都位於JDK中。 ---但是,對於你的第一點,請再次閱讀答案的最後部分:Tomcat沒有找到Java。 ** Tomcat由Java **運行,並且Java已經知道它本身在哪裏。Tomcat的Java代碼只是使用反射調用JSP編譯的Java類。 Tomcat不需要找到Java來做到這一點,因爲** Java已經在運行它**。 – Andreas
對不起,我一開始並沒有完全理解你的解釋。我試圖更好地理解它。所以這個過程是這樣的:1).jsp被轉換成.java,2).java被編譯爲.class,兩個步驟都在Tomcat中,3).class由JVM運行,這超出了Tomcat ,但完全用Java完成。你是這個意思嗎?謝謝。 – Peng