首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >远程服务器上的war java.lang.NoSuchMethodError,但是在本地是可以的

远程服务器上的war java.lang.NoSuchMethodError,但是在本地是可以的
EN

Stack Overflow用户
提问于 2022-11-09 15:02:07
回答 2查看 36关注 0票数 0

我面临着一个非常奇怪的问题,这个问题发生在下面的远程tomcat服务器上,但是在本地运行得很好。

代码语言:javascript
复制
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.doris.analysis.SqlParser.getSymbolFactory()Ljava_cup/runtime/SymbolFactory;

我知道有关这个问题的大多数相关主题是包复制、、依赖冲突、、等等。但实际上,我已经尝试消除这些因素。这场战争在当地和偏远地区都是一样的。我还解压缩了包含SqlParser类的jar,它是真正存在的,包括getSymbolFactory函数。

最奇怪的是,当我把它复制到本地运行它是可以的。起初,我怀疑这是关于猫的版本。但是在远程使用相同版本的Tomcat之后,错误仍然存在。

顺便说一下,jar包括由system类型导入的警告类。jars放在资源/lib/*中。跟这事有关吗?

导入系统jar的Maven配置

代码语言:javascript
复制
<dependency>
            <groupId>net.sourceforge.czt.dev</groupId>
            <artifactId>java-cup</artifactId>
            <version>0.11-a-czt02-cdh</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/resources/lib/java-cup-runtime-0.11-a-czt01-cdh.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.apache.doris</groupId>
            <artifactId>fe-core</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/resources/lib/fe-core-1.0-SNAPSHOT.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.apache.doris</groupId>
            <artifactId>fe-common</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/resources/lib/fe-common-1.0-SNAPSHOT.jar</systemPath>
        </dependency>

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>ftl</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                    <outputDirectory>target</outputDirectory>
                    <webResources>
                        <resource>
                            <filtering>true</filtering>
                            <directory>src/main/webapp/WEB-INF</directory>
                            <includes>
                                <include>**/*.xml</include>
                            </includes>
                            <targetPath>/WEB-INF</targetPath>
                        </resource>
                        <resource>
                            <directory>src/main/resources/lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>

就目前而言,我发现的最相关的线程是:java.lang.NoSuchMethodError when the method definitely exists我不知道如何解决这个问题,任何人都可以帮助我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-10 09:30:31

我回来解决了。我太粗心了。根本原因确实是从另一个jar加载的getSymbolFactory方法,我只验证了SqlParser类,缺少了从父类java_cup.runtime.lr_parser继承的getSymbolFactory方法。关键是这个类是从另一个jar加载的,我没有注意到。

它在本地机器上工作良好的原因是方法是从正确的jar加载的。我正在使用tomcat 8,我已经搜索了tomcat的加载机制。结果表明,tomcat 8的装载顺序没有得到保证。在这里,尽管这是一个基本问题,但我想总结一下故障排除时的情况。

  1. 打开加载jar日志并查看Catalina.out

Configure Tomcat to Log all Jar Files and/or Classes Loaded at Startup

我用这个

代码语言:javascript
复制
-XX:+TraceClassLoading

  1. 查找包含指定类或方法

的jar。

代码语言:javascript
复制
grep "xxx" web-inf/lib/jars

  1. 检查

类的签名

代码语言:javascript
复制
javap -classpath jar com.xxx.xxx

  1. 一些猫加载与

相关的文章

Order of loading jar files from lib directory

https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html

how tomcat will load the class if duplicate classes exist with same package structure

希望这些能帮助到其他人。

票数 0
EN

Stack Overflow用户

发布于 2022-11-09 15:08:00

NoSuchMethodError意味着您使用Apache的一个版本编译了代码/war,但是服务器上有不同的版本(或者可能还没有安装)。解决方案是将服务器上的Doris库升级到本地使用的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74377007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档