【问题标题】:How to make a Java 32bit web app run on fully 64 bit machine?如何使 Java 32 位 Web 应用程序在完全 64 位机器上运行?
【发布时间】:2013-11-15 09:06:13
【问题描述】:

我有一个在 32 位机器上由独立的 tomcat 服务器运行的 web 应用程序,现在我决定将它移动到完全 64 位环境的机器上,一切都将是 64 位 tomcat、java .. 等。

我完成了所需文件的传输和部署。然后启动服务器,但我可以查看我的应用程序抛出错误:“Servlet someservlet throw load() exception”

将 32 位源 Web 应用程序转移到完全 64 位的机器上是否有必要的步骤?

这是堆栈跟踪:

Nov 15, 2013 4:28:21 PM org.apache.catalina.core.ApplicationContext log
INFO: Marking servlet MeritOrderLoader as unavailable
Nov 15, 2013 4:28:21 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet threw load() exception
java.lang.StackOverflowError
    at java.lang.Exception.<init>(Unknown Source)
    at java.lang.ReflectiveOperationException.<init>(Unknown Source)
    at java.lang.reflect.InvocationTargetException.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:294)
    at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)
    at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:84)
    at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
    at trader.main.com.quantrisk.util.DatabaseConnectionFactory.getConnection(DatabaseConnectionFactory.java:38)

【问题讨论】:

  • 您应该仔细阅读异常堆栈跟踪。你知道,它实际上可能会告诉你出了什么问题。
  • 没有 64 位 Tomcat 这样的东西。 Java 是独立于平台的,只要你不使用一些确实依赖于平台的时髦 JNI 库
  • @Kal OP 可能正在使用双击 coughWindowscough 安装程序,该安装程序在一个包中包含 Tomcat 和 JVM。
  • 你能发布完整的堆栈跟踪吗?
  • @KeerthiRamanathan 在帖子中添加了堆栈跟踪。你可以看看它。我真的不知道为什么会这样。我现在很困惑。

标签: java jakarta-ee tomcat web 64-bit


【解决方案1】:

除非您使用的是原生 32 位库,否则不需要对 Java 程序进行任何更改;这就是独立于平台的字节码方法背后的意图。最有可能的是,Tomcat 安装存在一些差异,可能在类路径中。

【讨论】:

  • 如何判断我是否使用了本机 32 位库?我包含了很多 jar 文件。
  • @AndrexLoyloy 如有必要,查看 jar 中是否有 .so.dll 文件。 MySQL JDBC 驱动程序没有;这几乎可以肯定是一个配置问题。
  • 在哪里可以看到那些 .so 或 .dll 文件?
  • @AndrexLoyloy ...在 jar 文件中?
  • 所以你是说我应该检查我拥有的 jar 文件?有这么多,你能展示一些快速可行的方法吗?
【解决方案2】:

问题已解决。由于应用程序的一些隐藏配置,应用程序进入了无限循环。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 2014-11-02
    • 1970-01-01
    • 2012-07-04
    • 2010-10-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多