Java动态Web项目类路径

时间:2014-10-29 22:01:35

标签: java tomcat classpath

我有一个项目,同时在Tomcat本地运行,但我计划将来部署到某个服务器。 我有几个问题:

  1. 我正在使用tomcat-jdbc.jar。我应该如何在项目中包含该jar?将其复制到WEB-INF/lib或向tomcat添加库引用?后者便携式?即使我正在部署的服务器使用jetty,我也可以使用这个jar吗?
  2. 当我添加JRE时,eclipse要求我将其指向JRE路径。在类路径中添加的行是
  3. classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"

    eclipse如何从JRE所在的这一行中找出来?

    1. 当项目部署到服务器时,项目层次结构如何?
    2. 我的猜测是:

      <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?

4 个答案:

答案 0 :(得分:0)

  1. 您应该使用您将在生产中使用的同一服务器测试您的应用程序。
  2. 查看并设置jre属性eclipse-&gt; preferences-&gt; java-&gt;已安装的JRE。
  3. 如果导出war文件,WebContent中的所有文件都将处于war中,src文件夹中的.class文件将位于WEB-INF / classes中。
  4. 当您使用像tomcat这样的服务器时,它会使用您在其上设置的配置。

答案 1 :(得分:0)

  1. 如果您希望应用程序始终引用您的jar,请将其放在web-inf lib中。
  2. 正如Daniel在下面提到的那样,eclipse从首选项选项卡下的已安装JRE中获取JRE。您可以在eclipse中安装和配置多个JRE,然后单独选择项目并选择默认值。
  3. 3.您的项目层次结构是否正确。运行时将从服务器上设置的JAVA_HOME环境变量中获取JRE。

答案 2 :(得分:0)

您的应用程序需要以下三种类型的“资源”

  1. 系统资源:JRE类,您部署的服务器提供的一些扩展/库。
  2. 你的依赖项:你使用的任何库,比如common-utils,poi等。这些JAR文件放在你的web-inf / lib文件夹中
  3. 你的课程。它们与web-inf / classes
  4. 中的WAR文件一起部署

    所以,回答你的问题:

    1. 如果要部署到Tomcat,将提供tomcat-jdbc.jar。照顾好这个版本。如果您的prod服务器将是tomcat但dev是Jetty,那么您需要在本地IDE中提供此jar,但不要将其导出到WAR文件中。但是如果你在tomcat上开发并且在其他服务器上进行部署,那么这个jar必须与你的war文件(web-inf / lib文件夹)捆绑在一起。 Dev和Prod服务器不需要相同,但要注意JRE版本和对Prod服务器提供的库的依赖。
    2. JRE是服务器和IDE(Eclipse)的可配置设置
    3. 项目层次结构是正确的,但您很可能将其部署为WAR文件,因此您的 build 文件夹将导出到web-inf / classes中。您可以使用任何zip编辑器打开WAR文件进行验证。
    4. 关于tomcat-jdbc.jar的可移植性 不幸的是,这取决于tomcat库和版本。此jar文件可能存在更多依赖项,这可能会在以后导致问题。除非你打算在tomcat上部署,否则我建议不要依赖这个jar。

答案 3 :(得分:0)

1)池连接,它是Application Server提供的服务(在本例中为Tomcat)。恕我直言,你必须避免使用特定的实现绑定你的应用程序,在这种情况下使用通用的javax.sql.DataSource进行expample,然后“注入”或从服务器查找implmementation。然后,如果您使用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规范定义。如果选择yor项目并右键单击运行“导出” - > Eclipse,Eclipse会自动生成正确的结构。 “战争档案”。或者你可以使用maven。