Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体

0
votes
answers
楼主
91 views
+10

哪個配置文件告訴Tomcat已安裝的JRE的位置?

1

從現有的主題(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的位置?

沙发
0
1

但安裝Tomcat的過程中,我們只需要指定JVM的位置

指定JVM的位置隱含指定JRE的位置,因爲JVM是JRE目錄中找到結構體。

要編譯並運行Java代碼,我們只需要將JDK文件夾下的bin文件夾添加到路徑環境中即可。

添加JDK bin文件夾的路徑,意味着你可以運行javajavac命令。命令文件的位置隱式指定了要使用的JDK的位置,因此也指定了JVM。沒有配置文件。

在Windows 64位Java 5到Java 8中,JVM位於%JAVA_HOME%jreinserverjvm.dll

在Windows 64位Java 9中,JVM位於%JAVA_HOME%inserverjvm.dll中。

但是JDK 9不再包含JRE文件夾。相反,在JDK文件夾之外有一個獨立的JRE文件夾。

除非您告訴它不要創建單獨的JRE文件夾,否則所有Java版本的JDK安裝程序都將創建一個JDK文件夾和一個JRE文件夾。在這方面,Java 9與舊版Java版本沒有區別。

當運行編譯後的jsp代碼時,Tomcat仍然如何捕獲JRE?

Tomcat本身是用Java編寫的,所以Tomcat沒有找到Java。運行Tomcat的是Java。

+0

我在問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

+1

你讀過我的答案了嗎? JVM和所有Java Runtime Library都是Java 9 JDK的一部分。當然,它們不在「JRE」子文件夾中,但JRE中的所有內容都位於JDK中。 ---但是,對於你的第一點,請再次閱讀答案的最後部分:Tomcat沒有找到Java。 ** Tomcat由Java **運行,並且Java已經知道它本身在哪裏。Tomcat的Java代碼只是使用反射調用JSP編譯的Java類。 Tomcat不需要找到Java來做到這一點,因爲** Java已經在運行它**。 – Andreas

+0

對不起,我一開始並沒有完全理解你的解釋。我試圖更好地理解它。所以這個過程是這樣的:1).jsp被轉換成.java,2).java被編譯爲.class,兩個步驟都在Tomcat中,3).class由JVM運行,這超出了Tomcat ,但完全用Java完成。你是這個意思嗎?謝謝。 – Peng

discard