tools.jar 丢失 - 但仅限于第一次调用(Tomcat 8/Java 8/ Axis)

2023-12-12

现在,我将 Web 应用程序升级到了 Java 8,在 Tomcat 8 中运行的 axis Web 服务遇到了奇怪的类加载问题。

安装 Web 应用程序后第一次调用 Web 服务将导致 RuntimeException 和“在类路径中找不到编译器!(您可能需要添加 'tools.jar')”错误。

以下对该 Web 服务的所有调用都可以正常工作(显然 tools.jar 还在吗?)。

通过删除部署目录中展开的 webapp 文件夹可以重现该行为。下次tomcat启动后,第一次调用又会失败。如果分解的文件夹已经存在,则重新启动 tomcat 不会导致该错误。

当 tomcat/webapp 仍在使用 Java 7 运行时,不会发生该错误。

现在,轴心国的错误已经有很长很长的传统了。早期的解决方案是将tools.jar复制到tomcats lib目录中(又名使tools.jar在tomcats类路径中可用)。默认情况下它不存在,因为 axis 显然是使用 JRE 运行的(即使您在 JAVA_HOME 中使用 JDK 启动 tomcat)。

遗憾的是这没有帮助。我尝试了几种方法将tools.jar放入tomcats类路径中:

  • 我将其添加到libs文件夹中
  • 我通过 setenv.bat 将其添加到类路径中
  • 我将其添加到认可的 lib 文件夹中

没有任何帮助,第一次通话仍然失败。

然后我尝试了 JAVA_HOME 和 JRE_HOME。 Tomcat 尽可能以 JRE 启动,并且仅在使用某些需要 JDK 的功能时才使用 JDK。我尝试让 tomcat 使用 JDK 而不是 JRE,但错误仍然存​​在。

那么,提问时间:

  1. tomcat爆webapp.war时类加载与 如果战争在早期的服务器运行中已经爆发了?

  2. 启动时,tomcat 会将以下内容写入日志文件:

服务器版本:Apache Tomcat/8.0.15
服务器建成:2014年11月2日 19:25:20 UTC
服务器号:8.0.15.0
操作系统名称:Windows Server 2008 R2
操作系统版本:6.1
架构:x86
JAVA_HOME:C:\Dev\Java\jdk1.8.0_25\jre
JVM版本:1.8.0_25-b18
JVM 供应商:Oracle 公司
CATALINA_BASE: C:\Dev\apache-tomcat-8.0.15
CATALINA_HOME: C:\Dev\apache-tomcat-8.0.15
命令行参数:-Djava.util.logging.config.file=c:\Dev\apache-tomcat-8.0.15\conf\logging.properties
命令行参数:-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
命令行参数:-Djava.endorsed.dirs=c:\Dev\apache-tomcat-8.0.15\endorsed
命令行参数:-Dcatalina.base=c:\Dev\apache-tomcat-8.0.15
命令行参数:-Dcatalina.home=c:\Dev\apache-tomcat-8.0.15
命令行参数:-Djava.io.tmpdir=c:\Dev\apache-tomcat-8.0.15\temp

所以显然它以某种方式获得了对 JRE 的引用(尽管我只指定了 JDK,请参见上文)。我怎样才能改变这一点?

  1. 更多想法?

Edit2:罪魁祸首是 axis 第一次调用 Web 服务时编译的 .jws 文件。这些编译文件的存在是错误仅在第一次调用时发生的原因。

当然,这根本不能解释为什么第一次调用因“编译器丢失”错误而失败虽然创建必要的编译文件并可用于后续调用...

Edit:根据请求的轴错误的堆栈跟踪。与此处处理丢失的tools.jar 的所有其他主题相比,没有什么特别的:

java.lang.RuntimeException:在类路径中找不到编译器! (您可能需要添加“tools.jar”)
在 org.apache.axis.components.compiler.Javac.compile(Javac.java:156)
在 org.apache.axis.handlers.JWSHandler.setupService(JWSHandler.java:199)
在 org.apache.axis.handlers.JWSHandler.invoke(JWSHandler.java:72)
在 org.apache.axis.strategies.InitationStrategy.visit(InitationStrategy.java:32)
在 org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
在 org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
在 org.apache.axis.server.AxisServer.invoke(AxisServer.java:249) 在 org.apache.axis.transport.http.QSMethodHandler.invokeEndpointFromGet(QSMethodHandler.java:129)
在 org.apache.axis.transport.http.QSMethodHandler.invoke(QSMethodHandler.java:94)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:483)
在 org.apache.axis.transport.http.AxisServlet.processQuery(AxisServlet.java:1226)
在 org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:249)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
在 org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085)
在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
在 org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277)
在 org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2407)
在 org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2396)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
在 java.lang.Thread.run(Thread.java:745)


我得到的堆栈跟踪中的实际消息是原始发布者的消息,但前面有此消息。

看起来编译器返回的值与预期不同,但编译仍然完成并引发异常。这是来自http://www.docjar.org/html/api/org/apache/axis/components/compiler/Javac.java.html

136             if (modern) {
137                 int compilationResult = 
138                     ((Integer)compile.invoke(compiler, new Object[] 
139                         {
140                             toStringArray(fillArguments
141                                           (new ArrayList()))})).intValue();
142 
143                 result = (compilationResult == 0);        
144                 log.debug("Compilation Returned: " 
145                           + Integer.toString(compilationResult));
146             }
147             else {
148                 Boolean ok = 
149                     (Boolean)compile.invoke(compiler, new Object[] 
150                         {toStringArray(fillArguments(new ArrayList()))});
151         
152                 result = ok.booleanValue();
153             }
154         } catch (Exception cnfe){
155             log.error(Messages.getMessage("noCompiler00"), cnfe);
156             throw new RuntimeException(Messages.getMessage("noCompiler00"));


5-Apr-2015 20:16:42 ERROR 160663 [http-nio-10470-exec-10] org.apache.axis.components.compiler.Javac.compile(Javac.java:155) - No compiler found in your classpath!  (you may need to add 'tools.jar')
java.lang.ClassCastException: com.sun.tools.javac.main.Main$Result cannot be cast to java.lang.Integer
        at org.apache.axis.components.compiler.Javac.compile(Javac.java:137)
        at org.apache.axis.handlers.JWSHandler.setupService(JWSHandler.java:199)
        at org.apache.axis.handlers.JWSHandler.generateWSDL(JWSHandler.java:294)
        at org.apache.axis.strategies.WSDLGenStrategy.visit(WSDLGenStrategy.java:33)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.generateWSDL(SimpleChain.java:104)
        at org.apache.axis.server.AxisServer.generateWSDL(AxisServer.java:454)
        at org.apache.axis.transport.http.QSWSDLHandler.invoke(QSWSDLHandler.java:68)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.axis.transport.http.AxisServlet.processQuery(AxisServlet.java:1226)
        at org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:249)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
        at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

Update

我已经更改了代码 axis-1_4\src\org\apache\axis\components\compiler\Javac.java 如下所示,因为原始代码需要 JDK 8 之前的编译器的整数。 JDK 8 返回一个枚举。我只在我的本地副本上执行此操作并重新构建并且工作正常。

// Call the compile() method

 Method compile = c.getMethod("compile",

                                     new Class [] { String[].class });

 if (modern) {

   log.info("Using modified axis for jdk 8 compiler");  
   Object compilationResult =  (compile.invoke(compiler, new Object[] 

                    {
                        toStringArray(fillArguments
                                      (new ArrayList()))}));

   result = ("OK".equalsIgnoreCase(compilationResult.toString()));        
  log.debug("Compilation Returned: "+ compilationResult);
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tools.jar 丢失 - 但仅限于第一次调用(Tomcat 8/Java 8/ Axis) 的相关文章

  • java本地时间格式不带年份

    我喜欢将本地时间格式格式化为不带年份的字符串 目前我可以显示包含年份的本地格式 java text DateFormat df java text DateFormat getDateInstance java text DateForma
  • 为什么byteArray的长度是22而不是20?

    我们尝试从字符串转换为Byte 使用以下 Java 代码 String source 0123456789 byte byteArray source getBytes UTF 16 我们得到一个长度为 22 字节的字节数组 我们不确定这个
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • 如何避免 Java 中的忙旋转

    我有一个多线程应用程序 其中一个线程向另一个线程发送消息 等待线程轮询消息并做出反应 处理锁 像这样 等待线程代码 while true if helloArrived System out println Got hello if bye
  • 向 JList 添加滚动条? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何将 JList 添加到 JScrollPane 把你的JList in a JScrollPane JScrollPane scrol
  • 如何显示/隐藏jsf组件

    在我的一个 JSF 应用程序中 顶部的标题部分包含 selectOneMenu 底部的内容部分显示过滤器组件 默认情况下 应用程序首先在顶部显示 selectOneMenu 数据 在底部显示相应的 Filter 信息 如果用户选择不同的se
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • 如何知道 glassfish 是什么 - 完整平台或网络配置文件?

    我已经安装了glassfish 我可以跑 asadmin version 它显示了它是什么版本 但如何知道它是 完整平台 还是 Web 配置文件 你可以使用 glassfish4 bin gt asadmin list containers
  • 处理 ANTLR 4 中的错误

    遵循后接受的答案 https stackoverflow com a 18137301 2279200的指示处理 ANTLR4 中的错误 https stackoverflow com q 18132078 2279200问题 我遇到了以下
  • 维护插入顺序的并发集合[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以维护插入顺序的并发列表 有人有什么好的推荐吗 我看一些番石榴 例如SetFromMa
  • 在 JavaFX 中更改 ListView 字体大小

    我想知道如何更改 JavaFx 中的列表视图项目文本字体大小 每行文本的大小会有所不同 我尝试使用细胞因子属性 但我不知道如何使用它 有人可以帮我吗 类似的问题在这里 如何更改JavaFX中ListView的字体大小 https stack
  • 如何在不同的班级中启动和停止计时器?

    我想测量从传入 HTTP 请求开始到应用程序到达某个点的时间 这两个时间点都位于不同的类中 我将如何启动和停止这些不同类别的计时器 我没有看到使用 MeterRegistry 中的 命名 计时器的方法 我该怎么办呢 您可以使用 AOP 如下
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 将字符串转换为字符并按降序排序(ascii)

    我正在创建一个程序 该程序将使用户输入整数 一个接一个 存储在数组中并按降序显示整数 该程序还要求用户输入一个字符串 使用以下命令将其转换为字符string toCharArray 我已经正确地按降序显示整数 问题是我不知道如何按降序显示字
  • 如何在Java中通过反射调用代理(Spring AOP)上的方法?

    一个接口 public interface Manager Object read Long id 实现该接口的类 Transactional Public class ManagerImpl implements Manager Over
  • Java XML 解析器添加不必要的 xmlns 和 xml:space 属性

    我在 Windows 10 上使用 Java 11 AdoptOpenJDK 11 0 5 2019 10 15 我正在解析一些旧版 XHTML 1 1 文件 这些文件采用以下一般形式
  • logcat 信息出现在 Android Studio 的“运行”选项卡中

    我的 android studio 运行选项卡很简单 然后它变得更难并给我更多信息 例如 logcat 中的信息 如何禁用或删除第二张图片中出现的更多信息并返回到第一张图片中的第一个外观 我只需要正在运行的 flutter 应用程序的日志输
  • 如何从Java中的连接获取查询字符串?

    我正在编写一个方法 尝试记录数据库调用 形成连接到它的连接 在查询之后 有很多地方调用方法 connect 来启动并调用 cleanUp 方法来结束 我不能并且不想修改每个地方 所以顺序是这样的 Connection con connect
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • Java 应用程序启动,ProcessBuilder 一段时间后被阻止

    我正在开发一个 Java 桌面应用程序 我们称之为控制台 包含 3 个按钮 其中两个启动 Win32 应用程序 第三个应该启动一个可执行的 jar ProcessBuilder pb new ProcessBuilder java jar

随机推荐

  • Android通知图标问题

    我有一个奇怪的问题 我有两种方式在 Android 应用程序中发送通知 一个来自 Android 服务 另一个通过 FCM 场景如下 无论应用程序是否正在运行 从 Android 服务发送的通知的图标都会正确显示 当应用程序运行时 如果我通
  • 绑定(这个)是什么意思?

    我已经知道绑定的作用是将给定的对象或函数绑定到您想要的函数 但是bind this 这真的让我很困惑 是什么意思this in bind真正意思 下面是我的带有 firebase 数据库的 React 应用程序的代码 componentWi
  • 在启用 ARC 的 C 代码中执行 Objective-C 代码时出现运行时内存泄漏警告

    ARC 已启用并且bufferReady正在由 C 库 未启用 ARC 触发 并且我确信我在某处缺少 ARC 转换 请指教 提前致谢 使用下面的代码 implementation HelloWorldLayer id refToSelf r
  • Laravel 使用 AngularJS 只存储多个文件上传文件中的一个文件

    早上好或晚上好 这取决于您何时阅读此主题 我使用 Angular 和 Laravel 编写了这段代码来上传多个文件 但是我从请求中得到的只是一个文件对象 所有其他文件对象都被释放 因此在 laravel 控制器中不会在 foreach 中循
  • 为什么这个记忆实现对匿名函数有效,但对声明的函数无效?

    我正在尝试使用记忆来优化斐波那契函数的显式自递归实现 下面是相当标准的实现 一个简单且相当幼稚的实现 但重点关注实际问题 Function prototype memoize function var originalFunction th
  • 在 GetMessage 循环中未接收到 WM_COMMAND

    有人可以解释一下为什么我从未收到过WM COMMAND我的 GetMessage 循环中的消息 我已经检查过 WndProc 正在接收WM COMMAND消息 所以我很困惑为什么这不起作用 while GetMessage msg NULL
  • .htaccess 重定向后隐藏子目录 url

    我正在将网站重定向到我创建的子目录 该子目录包含 WordPress 的安装 现在我想从网站中屏蔽该子目录 url 现在是这样的http mywebsite com apt 我想从 URL 中删除 apt 我今天尝试了一切 在谷歌上搜索 尝
  • 使用服务层时配置 IoC 容器的正确层是什么?

    我有一个中等大小的 asp net MVC 应用程序 它使用一个服务层来处理所有存储库的使用 调用域服务等 我的控制器操作非常精简 它们基本上调用一个服务类 获取响应并显示该响应 大多数组件都是基于一些穷人的 DI 的接口 该应用程序正在不
  • Pygame 绘图旋转 90 度

    因此 如果您有机会看到我之前的问题 您就会知道我正在与一位朋友一起重现康威的生命游戏 我遇到了另一个问题 绘图由于某种奇怪的原因而被旋转 我认为 x 和 y 位置有问题 但我似乎找不到解决方法 任何帮助表示赞赏 这是代码 Import go
  • 构造函数隐式删除

    下面列出了相关代码 您可以查看https godbolt org z 3GH8zD 我确实可以解决编译器编译错误 但我并不完全清楚其背后的原因 我将不胜感激对这个问题有一些帮助 struct A int x A int x 1 x x us
  • .obj 中已定义变量,但没有循环包含[重复]

    这个问题在这里已经有答案了 我知道 SO 上已经有很多类似的问题和解决方案 我读过它们 但没有一个能帮助我解决我的问题 我创建了一个用于记录的类 这是Logger h ifndef LOGGER H define LOGGER H name
  • java.io.NotSerializedException - org.omnifaces.taghandler.Converter

    我有一个在 Jboss 6 上使用 Primefaces 3 5 和 Omnifaces 1 5 的应用程序 使用 myfaces 2 1 5 尝试使用o converter我收到以下错误 org omnifaces taghandler
  • 使用数组求偶数和奇数平均值

    编写一个程序 从用户那里读取 10 个值的列表 将值放入数组中 程序应读取数组 然后计算并显示偶数输入值和奇数输入值的平均值 这应该使用对象 方法和测试器类来完成 我不明白为什么我收到错误 二元运算符的操作数类型错误 我不知道该改变什么 我
  • 使用 CloudFormation 模板部署 IIS 网站

    我有一个 Visual Studio C 部署包 zip 已将其推送到我的 S3 存储 我想运行我的 CloudFormation 脚本并让它创建 IIS 服务器的实例 我有用于此的脚本 然后将 Visual Studio 网站从 S3 存
  • 使用 cron 安排 R 脚本

    我正在尝试使用 cron 安排我的 R 脚本 但它不起作用 R 似乎在 cron 中找不到包 有人可以帮助我吗 谢谢 以下是我的 bash 脚本 source my profile home winie profile script R w
  • Java 8 链式方法参考?

    假设有一个典型的Java Bean class MyBean void setA String id void setB String id List
  • Javascript:sum(2)(3) //返回5是什么意思;

    这是返回其值的代码 function sum a return function b return a b sum 2 3 它返回 5 但如果我输入代码 function sum a function add b return a b re
  • 跟踪 Informix Client for Linux 的 ODBC 调用

    我尝试跟踪 Linux 上运行的程序中的 ODBC 函数调用 该程序动态链接 ODBC 管理器 然后连接到数据库并获取一些数据 我可以通过添加到 odbcinst ini 来使用 unixODBC 跟踪 ODBC 调用 ODBC Trace
  • 没有方法获取字节数组流[重复]

    这个问题在这里已经有答案了 我想获取字节数组流 但我发现Arrays没有获取字节数组流的方法 byte byteArr new byte 100 Arrays stream byteArr Compile time error 我的问题 为
  • tools.jar 丢失 - 但仅限于第一次调用(Tomcat 8/Java 8/ Axis)

    现在 我将 Web 应用程序升级到了 Java 8 在 Tomcat 8 中运行的 axis Web 服务遇到了奇怪的类加载问题 安装 Web 应用程序后第一次调用 Web 服务将导致 RuntimeException 和 在类路径中找不到