GVKun编程网logo

如何在Eclipse中包含Apache Commons IO?(Java)(在eclipse里面创建的各种包)

15

本文将介绍如何在Eclipse中包含ApacheCommonsIO?的详细情况,特别是关于Java的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于A

本文将介绍如何在Eclipse中包含Apache Commons IO?的详细情况,特别是关于Java的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于Apache Commons CLI 1.4,Java 命令行参数处理类库、Apache Tomcat无法在Eclipse EE中启动、apache-commons commons-pool2整合 commons-net 自定 FTPClient对象池、apache.commons.vfs2与apache.commons.io监听文件的有什么区别的知识。

本文目录一览:

如何在Eclipse中包含Apache Commons IO?(Java)(在eclipse里面创建的各种包)

如何在Eclipse中包含Apache Commons IO?(Java)(在eclipse里面创建的各种包)

如何配置Eclipse安装以使用Apache Commons IO中的类?

我想使用以下代码:

IOUtil.write(encoded, new FileOutputStream(new File("target-file.txt")))

但是它给出了错误:

IOUtil无法解决

答案1

小编典典

您还可以使用构建工具eclipse插件,例如 m2eclipse
IAM (以前称为
Q4e )。

可以按照这些说明安装IAM
,并且它具有出色的依赖性查看器

替代文字

m2eclipse和IAM之间的差异将在此处,此处和此处进行讨论。

Q4E是面向事件的,我相信m2e使用控制台和stdin / out。

更大的一个是 m2eclipse派生并使用外部Maven(用于运行Maven目标),而iam/q4e仅使用embedder
我们在这里的立场是走这条路,可以实现深度集成和更好的性能。
当然,它使我们能够在maven增量生成器中快速执行诸如依赖关系分析视图和其他“魔术”之类的操作。

Apache Commons CLI 1.4,Java 命令行参数处理类库

Apache Commons CLI 1.4,Java 命令行参数处理类库

Apache Commons CLI 1.4 发布了,Apache Commons CLI 库提供了一个 API,用于解析传递给程序的命令行选项。它还能够打印详细说明命令行工具可用选项的帮助消息。

本次更新如下:

新特性

  • CLI-269: Introduce CommandLine.Builder

  • CLI-267: Add an addRequiredOption method to Options. Thanks to Ricardo Ribeiro.

Bug 修复

  • CLI-265: Optional argument picking up next regular option as its argument.Thanks to Martin Sandiford.

  • CLI-266: HelpFormatter.setOptionComparator(null) doesn''t display the values in inserted order. Thanks to Ravi Teja.

详细更新内容点此查看

下载地址 和 发布页面

也可以通过 maven 拉取

<dependency>
  <groupId>commons-cli</groupId>
  <artifactId>commons-cli</artifactId>
  <version>1.4</version>
</dependency>

Apache Tomcat无法在Eclipse EE中启动

Apache Tomcat无法在Eclipse EE中启动

如何解决Apache Tomcat无法在Eclipse EE中启动?

因此,我一直在尝试使用Eclipse EE进行Java Web开发。服务器一直在工作,直到我更改了代码的注释之一。然后,我尝试摆脱服务器,然后重新将其重新添加,以解决此错误,从而使其更糟。现在我的Apache Tomcat服务器甚至无法启动。检查以下错误。

错误消息:https://i.imgur.com/a6Bf8Vd.png

端口配置:https://i.imgur.com/umL4YNC.png

错误日志:

Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name:   Apache Tomcat/9.0.37
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Jun 30 2020 20:09:49 UTC
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 9.0.37.0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Windows 10
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            10.0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             C:\Program Files\Java\jre1.8.0_261
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           1.8.0_261-b12
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM vendor:            Oracle Corporation
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         C:\Users\Yong Chen\Desktop\Eclipse Work Space\JSP & Servlets\.Metadata\.plugins\org.eclipse.wst.server.core\tmp0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         C:\Program Files\Apache Software Foundation\Tomcat 9.0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=C:\Users\Yong Chen\Desktop\Eclipse Work Space\JSP & Servlets\.Metadata\.plugins\org.eclipse.wst.server.core\tmp0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 9.0
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=C:\Users\Yong Chen\Desktop\Eclipse Work Space\JSP & Servlets\.Metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 9.0\endorsed
Oct 04,2020 6:06:41 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=UTF-8
Oct 04,2020 6:06:41 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_261\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_261/bin/server;C:/Program Files/Java/jre1.8.0_261/bin;C:/Program Files/Java/jre1.8.0_261/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\program files (x86)\skype\Phone\;C:\Program Files\Java\jdk1.8.0_251\bin;C:\Program Files\Java\jdk-14.0.1\bin;C:\Program Files\Git\cmd;bin\com.pantech.myModule;C:\Users\Yong Chen\AppData\Local\Programs\Python\python37\Scripts\;C:\Users\Yong Chen\AppData\Local\Programs\Python\python37\;C:\Users\Yong Chen\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.1\bin;;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.1\bin;;C:\Users\Yong Chen\AppData\Local\Programs\Microsoft VS Code\bin;C:\eclipse;;.]
Oct 04,2020 6:06:41 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8180"]
Oct 04,2020 6:06:42 PM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [1305] milliseconds
Oct 04,2020 6:06:42 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
Oct 04,2020 6:06:42 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.37]
Oct 04,2020 6:06:43 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container Failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at java.util.concurrent.FutureTask.report(UnkNown Source)
    at java.util.concurrent.FutureTask.get(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:738)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 21 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.class.getDeclaredMethods0(Native Method)
    at java.lang.class.privateGetDeclaredMethods(UnkNown Source)
    at java.lang.class.getDeclaredMethods(UnkNown Source)
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:133)
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:285)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:138)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:69)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:331)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:986)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5044)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 27 more
Caused by: java.lang.classNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    ... 40 more

Oct 04,2020 6:06:43 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container Failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container Failed during start
    at java.util.concurrent.FutureTask.report(UnkNown Source)
    at java.util.concurrent.FutureTask.get(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:738)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
Caused by: org.apache.catalina.LifecycleException: A child container Failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:928)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 13 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at java.util.concurrent.FutureTask.report(UnkNown Source)
    at java.util.concurrent.FutureTask.get(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    ... 21 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 21 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.class.getDeclaredMethods0(Native Method)
    at java.lang.class.privateGetDeclaredMethods(UnkNown Source)
    at java.lang.class.getDeclaredMethods(UnkNown Source)
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:133)
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:285)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:138)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:69)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:331)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:986)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5044)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 27 more
Caused by: java.lang.classNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    ... 40 more

Oct 04,2020 6:06:43 PM org.apache.catalina.startup.Catalina start
SEVERE: The required Server component Failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: A child container Failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:928)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:738)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(UnkNown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(UnkNown Source)
    at java.lang.reflect.Method.invoke(UnkNown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: A child container Failed during start
    at java.util.concurrent.FutureTask.report(UnkNown Source)
    at java.util.concurrent.FutureTask.get(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    ... 13 more
Caused by: org.apache.catalina.LifecycleException: A child container Failed during start
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:928)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 13 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at java.util.concurrent.FutureTask.report(UnkNown Source)
    at java.util.concurrent.FutureTask.get(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    ... 21 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/S20P220_-_Deployment_Descriptor]]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$startChild.call(ContainerBase.java:1374)
    at java.util.concurrent.FutureTask.run(UnkNown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(UnkNown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 21 more
Caused by: java.lang.NoClassDefFoundError: HttpServletRequest
    at java.lang.class.getDeclaredMethods0(Native Method)
    at java.lang.class.privateGetDeclaredMethods(UnkNown Source)
    at java.lang.class.getDeclaredMethods(UnkNown Source)
    at org.apache.catalina.util.Introspection.getDeclaredMethods(Introspection.java:133)
    at org.apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.java:285)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:138)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:69)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:331)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:986)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5044)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 27 more
Caused by: java.lang.classNotFoundException: HttpServletRequest
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    ... 40 more

Oct 04,2020 6:06:43 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio-8180"]
Oct 04,2020 6:06:43 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Catalina]
Oct 04,2020 6:06:43 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-nio-8180"]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

apache-commons commons-pool2整合 commons-net 自定 FTPClient对象池

apache-commons commons-pool2整合 commons-net 自定 FTPClient对象池

commons-net 包介绍

commons-net 是 apachecommons 用于网络的工具包,它实现了一些常见的网络工具,如 smtppop3telnetftpudp 等,本文主要使用它的 ftp 工具。

使用 FTP 工具时的问题

在使用 commons-net 提供的 ftp 工具的时候 ,发现每次都要走一遍完整的连接,登录流程。每次都创建连接的话,很快就会把连接耗光,如果使用单例,则效率过低,因为只有一个连接,所以考虑用对象池的方式。

自已定义对象池的话,我之前有弄过,但要考虑好多的问题。像线程池一样,需要考虑核心对象数、最大对象数、何时创建对象 、及队列等,这时可以使用 apache 的 commons-pool2 来做一个对象池。

重要说明 : FTPClient 每次使用都需要重新连接,不然它会自动断开连接,使用会直接返回 421 ,本文章只是给个使用 commons-pool2 对象池的示例。

如何使用 commons-pool2

可以这么想,如果我要做个对象池的工具给别人用,首先要考虑的是池子里装的什么,用户要如何创建池子里的对象,然后提供方法借对象和回收对象,我可以把池子中的对象抽象出来,由一个工厂统一管理,用户的对象从我的通用对象继承或实现,或使用聚合方式 。

其实 spring-data-redis 已经给我们一个完整的使用 commons-pool2 的例子,它就是用的 commons-pool2 ,它的池中对象是 redis 连接,有兴趣可以去瞧瞧。

定义池中对象 FTPClient 的扩展对象

因为 FTPClient 的功能太过简单,连多层目录时自己创建目录都不会,所以有必要给它包装一下,这里你可以扩展常用到的方法。

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

@Slf4j
public class FtpClientExtend {
    private FTPClient ftpClient ;

    public FtpClientExtend(FTPClient ftpClient) {
        this.ftpClient = ftpClient;
    }

    /**
     * 列出文件列表
     * @param filePath
     * @return
     * @throws IOException
     */
    public FTPFile[] listFiles(String filePath) throws IOException {
        return ftpClient.listFiles(filePath);
    }

    /**
     * 下载文件
     * @param filePath
     * @return
     */
    public InputStream downloadFile(String filePath) throws IOException {
        return ftpClient.retrieveFileStream(filePath);
    }

    /**
     * 存储文件
     * @param s
     * @param inputStream
     */
    public void uploadFile(String filePath, InputStream inputStream) throws IOException {
        File targetFilePath = new File(filePath);
        Path path = targetFilePath.getParentFile().toPath();
        Iterator<Path> iterator = path.iterator();
        StringBuffer root = new StringBuffer("");
        while (iterator.hasNext()){
            Path next = iterator.next();
            root.append("/").append(next);

            //尝试切入目录
            boolean success = ftpClient.changeWorkingDirectory(root.toString());
            if(!success){
                int mkd = ftpClient.mkd(next.toString());
                ftpClient.changeWorkingDirectory(root.toString());
            }
        }

        ftpClient.enterLocalPassiveMode();
        ftpClient.setControlEncoding("UTF-8");
        ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        boolean storeFileResult = ftpClient.storeFile(targetFilePath.getName(), inputStream);
        if (storeFileResult) {
            log.debug("上传文件:" + filePath + ",到目录:" + ftpClient.printWorkingDirectory() + " 成功");
        }else{
            log.debug("上传文件:" + filePath + ",到目录:" + ftpClient.printWorkingDirectory() + " 失败");
        }
    }
}

使用聚合包裹池中对象

这个包裹对象的类才是工厂真正产生在池中的类,文末给出图示

import org.apache.commons.pool2.PooledObjectFactory;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

public class FtpClientPool extends GenericObjectPool<FtpClientExtend> {

    public FtpClientPool(PooledObjectFactory<FtpClientExtend> factory) {
        super(factory);
    }

    public FtpClientPool(PooledObjectFactory<FtpClientExtend> factory, GenericObjectPoolConfig config) {
        super(factory, config);
    }
}

建立创建对象的工厂

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.pool2.BasePooledObjectFactory;
import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.impl.DefaultPooledObject;

public class FtpClientFactory extends BasePooledObjectFactory<FtpClientExtend> {
    @Value("${ftp.host:localhost}")
    private String host;
    @Value("${ftp.port:21}")
    private int port;
    @Value("${ftp.username:ftpadmin}")
    private String username;
    @Value("${ftp.password:salt202}")
    private String password;

    @Override
    public FtpClientExtend create() throws Exception {
        FTPClient ftpClient = new FTPClient();
        ftpClient.connect(host,port);
        boolean login = ftpClient.login(username, password);
        if(!login){
            throw new RuntimeException("ftp 登录失败,检查用户名密码是否正确["+host+":"+port+"]["+username+"]["+password+"]");
        }
        return new FtpClientExtend(ftpClient);
    }

    @Override
    public PooledObject<FtpClientExtend> wrap(FtpClientExtend ftpClientExtend) {
        return new DefaultPooledObject(ftpClientExtend);
    }
}

使用方法

@Autowired
private FtpClientPool ftpClientPool;

public void method(){
    FtpClientExtend ftpClientExtend = null;
    try{
        ftpClientExtend = ftpClientPool.borrowObject();
    }finally{
         if(ftpClientExtend != null) {
          ftpClientPool.returnObject(ftpClientExtend);
        }
    }
}

原理图示

在这里插入图片描述

apache.commons.vfs2与apache.commons.io监听文件的有什么区别

apache.commons.vfs2与apache.commons.io监听文件的有什么区别

请问各位大佬,用apache.commons.vfs2与apache.commons.io监听文件的有什么区别?

关于如何在Eclipse中包含Apache Commons IO?Java的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Apache Commons CLI 1.4,Java 命令行参数处理类库、Apache Tomcat无法在Eclipse EE中启动、apache-commons commons-pool2整合 commons-net 自定 FTPClient对象池、apache.commons.vfs2与apache.commons.io监听文件的有什么区别等相关知识的信息别忘了在本站进行查找喔。

本文标签: