Java动态Web项目类路径

esyap4oy  于 2023-03-11  发布在  Java
关注(0)|答案(5)|浏览(144)

我有一个项目,目前在Tomcat本地运行,但我计划将来部署到某个服务器上。我有几个问题:
1.我使用的是tomcat-jdbc.jar,我应该如何将这个jar包含在项目中?复制到WEB-INF/lib还是添加一个对tomcat的库引用?后者是否可移植?即使我部署到的服务器使用jetty,我是否可以使用这个jar?
1.当我添加JRE时,eclipse要求我将它指向JRE路径。
classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"
eclipse如何从这一行中找出JRE所在的位置?
1.当项目部署到服务器时,项目层次结构看起来会是什么样子?
我的猜测是:

<project name>
----<build> (.class files)
----<WebContent>
--------<META-INF>
------------MANIFEST.MF
--------<WEB-INF>
------------<lib>
----------------external_jar.jar
------------web.xml
---------index.html

这是正确的吗?如果是,运行时如何知道在哪里可以找到JRE?或Tomcat安装文件夹中的tomcat-jdbc.jar?

dy1byipe

dy1byipe1#

应用程序需要以下三种类型的“资源”
1.系统资源:JRE类,一些由您部署的服务器提供的扩展/库。
1.您的依赖项:您使用的任何库,比如common-utils、poi等。这些JAR文件位于web-inf/lib文件夹中
1.您的类。这些类与Web-inf/classes中的WAR文件一起部署
所以,为了回答你们的问题:
1.如果您正在部署到Tomcat,则会提供tomcat-jdbc.jar。不过要注意版本。如果您的生产服务器是Tomcat,而开发服务器是Jetty,则需要在本地IDE中提供此jar,但不要将其导出到WAR文件中。但如果您正在Tomcat上开发,并在其他服务器上部署,那么这个jar必须和你的war文件捆绑在一起(web-inf/lib文件夹)。开发服务器和生产服务器不需要相同,但是要注意JRE版本和对生产服务器提供的库的依赖性。

  1. JRE是服务器和IDE(Eclipse)的可配置设置
    1.项目层次结构是正确的,但您很可能会部署为WAR文件,因此您的 build 文件夹被导出到web-inf/classes中。您可以通过使用任何zip编辑器打开WAR文件来验证。

关于tomcat-jdbc.jar的可移植性不幸的是,这取决于tomcat库和版本。这个jar文件可能有更多的依赖项,这可能会在以后导致问题。我建议不要依赖这个jar,除非你计划在tomcat上部署。

wyyhbhjk

wyyhbhjk2#

1.应该使用将在生产中使用的同一台服务器来测试应用程序。
1.查看和设置jre属性eclipse-〉首选项-〉java-〉已安装的JRE。
1.如果导出war文件,WebContent中的所有文件都将位于war中,而src文件夹中的.class文件将位于WEB-INF/classes中。
当你使用像tomcat这样的服务器时,它会使用你设置的配置。

cbeh67ev

cbeh67ev3#

1.如果你想让应用程序总是引用你的jar,把它放在web-inf库中。
1.正如丹尼尔在下面提到的,eclipse从preferences选项卡下安装的JRE中获取JRE,您可以在eclipse中安装和配置多个JRE,然后为项目单独选择,也可以选择default。
3.项目层次结构正确。运行时将从服务器上设置的JAVA_HOME环境变量获取JRE。

insrf1ej

insrf1ej4#

1)池连接,它是由应用服务器提供的服务(在本例中为Tomcat)。恕我直言,您必须避免将您的应用程序与特定的实现绑定,在这种情况下,使用通用的javax.sql.DataSource作为示例,然后“注入”或从服务器查找实现。然后,如果您使用Jetty,配置您想要的连接池实现https://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource
所以不要在你的web-inf/lib中包含tomcat-jdbc.jar。
2)“org.eclipse.jdt.launching.JRE_CONTAINER”是Eclipse的内部变量,其值是Eclipse属性中的配置值,用于Eclipse编译和运行应用程序。
3)在你的项目结构中,“.class”文件,必须在“WEB-INF/classes”中。这是由servlet规范定义的。如果你选择你的项目,并右键单击运行“Export”--〉“War file”,Eclipse会自动生成正确的结构。或者你可以使用maven。

dfuffjeb

dfuffjeb5#

我的错误是这样解决的:我复制了我剪贴板上的jar文件,并将它们粘贴到WEB-INF--〉“lib”文件夹中,然后重新运行该项目,您可以更改您的浏览器

相关问题