【问题标题】:working as servlet but not as java class. why?作为 servlet 但不作为 java 类工作。为什么?
【发布时间】:2016-09-02 06:59:42
【问题描述】:

我正在研究 SAML SSO 身份验证。 我创建了一个 servlet 来生成 SAML 元数据,我部署并运行它并得到了输出。 同时,我创建了一个 java 类来使用相同的代码生成 SAML 元数据,并尝试独立运行它。我添加了用于该 servlet 应用程序的相同 Jar 文件。 但我得到了下面给出的例外。任何人都可以帮助我找出独立运行应用程序和使用 java servlet 之间的区别吗? 提前致谢。

例外:

【问题讨论】:

  • 你能贴出代码 sn-p 吗?
  • 您是否已将 slf4j jar 添加到您的独立程序中?好像是用来做日志的。
  • 看来你这里有不同的类路径。你在这里有一个不同的 logback 库。

标签: java servlets metadata saml


【解决方案1】:

在 web 容器中作为 servlet 运行意味着各种东西都在 servlet 容器自动提供的类路径中。

使用 main() 运行意味着您必须自己将所有需要的东西放在类路径中。你得到的 ClassNotFoundException 在这方面应该很清楚。

(请注意,虽然我确实说过“类路径”,但在 servlet 容器中,事情通常不是那么简单。但这不是重点。还要注意,作为 servlet 运行,并使用为容器,甚至可能意味着您的东西不能作为独立的 java 程序运行,仅仅是因为库的东西是故意供 servlet 容器专用的。)

【讨论】:

  • 我添加了与我在 Web 应用程序中使用的完全相同的 jar 文件。除了添加这些 jar 文件之外,我将如何为独立应用程序配置类路径。请指教。
  • 并且浏览你说你添加的那些jar的内容,你可以找到org/slf4j/impl/MessageFormatter.class文件?
猜你喜欢
  • 2017-11-02
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多