【问题标题】:IllegalStateException with naming parameters in tomcat在 tomcat 中带有命名参数的 IllegalStateException
【发布时间】:2015-05-28 13:40:42
【问题描述】:

我用tomcat和spring已经很久了(一年多了)。一切都很顺利。 今天突然启动tomcat的时候出现一个奇怪的错误:

Caused by: java.lang.IllegalStateException: Using named parameters for method public abstract java.util.List com.securegion.monitorcenter.dao.IncidentsViewRepository.getFixedIncidents(java.lang.String,java.util.List,java.lang.String,java.lang.String,int,int) but parameter 'text' not found in annotated query 'select * from siemincidents where fixed = 1 and descriptioninfo like %?1% and incidentseverity in ?2 and starttimestamp >= ?3 and endtimestamp <= ?4 order by starttimestamp desc limit ?5, ?6'!

我不知道该怎么做,但是没有人使用该方法,因此我将其删除。然后我重新启动了tomcat,得到了

Using named parameters for method public abstract java.util.List com.securegion.monitorce nter.dao.IncidentsViewRepository.getFixedIncidents(int,int) but parameter 'start' not found in annotated query 'select * from siemincidents where fixed = 1 order by starttimestamp desc limit ?1, ?2'!

再次,我不知道这是什么,所以我从 eclipse 中完全删除了 tomcat 服务器并重新创建它。这工作了半个小时,然后我遇到了同样的问题!比,删除tomcat没有帮助。 奇怪的是 DAO 中的服务以“get”而不是“find”开头。我认为可能是tomcat很困惑,所以我将“get”改为“fetch”。没有帮助。我在这里读到,我应该写“:text”而不是写“?1”。但是用“?”来理解写作。工作了一年多,所以我有很多带有“?”的参数- 一个烦人的错误工作太多(它工作了一年多)。我检查了我所有的文件,今天没有任何重要的更改,所以我不知道是什么文件导致的。

在乞讨时它只发生在我身上,但现在它发生在一位同事身上。我们使用 JENKINS 来部署我们的服务器,而 JENKINS 在

中崩溃
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [/etc/jenkins/jobs/mcg_DeployToDev/workspace/mcg/target/mcg.war]
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:107)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
    at hudson.FilePath.act(FilePath.java:989)
    at hudson.FilePath.act(FilePath.java:967)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:761)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:721)
    at hudson.model.Build$BuildExecution.post2(Build.java:183)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:670)
    at hudson.model.Run.execute(Run.java:1766)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Deployed application at context path /mcg but context failed to start

    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
    ... 17 more
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Deployed application at context path /mcg but context failed to start

    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
    at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
    at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
    at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
    at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
    at hudson.FilePath.act(FilePath.java:989)
    at hudson.FilePath.act(FilePath.java:967)
    at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
    at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:761)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:721)
    at hudson.model.Build$BuildExecution.post2(Build.java:183)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:670)
    at hudson.model.Run.execute(Run.java:1766)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:374)
Build step 'Deploy war/ear to a container' marked build as failure
Finished: FAILURE

如果重要的话,我使用的是 tomcat 8。

我能做什么?这是一个如此大的问题,也许我只是错过了一个小故障......它是什么?

【问题讨论】:

  • 你检查过你正在读取的数据库吗?
  • 我应该检查什么?我可以从中选择,我还需要什么?
  • 我不知道...数据库有什么变化吗?你是在看风景吗?
  • 我正在从视图中读取,但如果我评论代码,它会告诉我,当我重述 tomcat 时,从表中读取的另一个代码是错误的。而且我不知道数据库发生了变化。
  • 视图很可能已损坏。尝试重建它。

标签: java spring tomcat jenkins


【解决方案1】:

什么修复了它正在改变'?到 :param 并在方法中的参数前添加 @Param("param")。

意思是select方法:

@Query(value = "SELECT * FROM agents limit ?1, ?2", nativeQuery = true)
public List<AgentEntity> getAll(int start, int length);

已更改为

@Query(value = "SELECT * FROM agents limit :start, :length", nativeQuery = true)
public List<AgentEntity> getAll(@Param("start") int start, @Param("length") int length);

这解决了问题。

【讨论】:

    【解决方案2】:

    我可以通过以下方式工作

    1. 带参数 @Query(value = "SELECT * FROM 代理限制 :start, :length", nativeQuery = true) public List getAll(@Param("start") int start, @Param("length") int length);

    2. 无参数 @Query(value = "SELECT * FROM 代理限制 :start, :length", nativeQuery = true) public List getAll(int start,int length);

    【讨论】:

      【解决方案3】:

      这个问题太老了,但我遇到了同样的问题。我的问题是由于tomcat 版本。我从tomcat 8 切换回tomcat 7,代码开始按预期工作。 似乎Tomcat 8Native Query 中不支持?

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 2018-10-27
        • 1970-01-01
        相关资源
        最近更新 更多