java打不开jar的解决办法
SpringBootjava-jar命令行启动原理解析

SpringBootjava-jar命令⾏启动原理解析在spring boot⾥,很吸引⼈的⼀个特性是可以直接把应⽤打包成为⼀个jar/war,然后这个jar/war是可以直接启动的,⽽不需要另外配置⼀个Web Server。
那么spring boot如何启动的呢?今天我们就来⼀起探究⼀下它的原理。
⾸先我们来创建⼀个基本的spring boot⼯程来帮助我们分析,本次spring boot版本为 2.2.5.RELEASE。
// SpringBootDemo.java@SpringBootApplicationpublic class SpringBootDemo {public static void main(String[] args) {SpringApplication.run(SpringBootDemo.class);}}下⾯是pom依赖:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><finalName>springboot-demo</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>创建完⼯程后,执⾏maven的打包命令,会⽣成两个jar⽂件:springboot-demo.jarspringboot-demo.jar.original其中springboot-demo.jar.original是默认的maven-jar-plugin⽣成的包。
IntelliJIDEA打可运行jar包时的错误

IntelliJIDEA打可运⾏jar包时的错误1、[ERROR] 'build.resources.resource.directory'解决:需要在pom.xml的project->build->resources节点下,加⼊以下节点:(解决时,添加了directory节点)<resources><resource><directory>src/main/resources</directory><includes><include>META-INF/*.SF</include><include>META-INF/*.DSA</include><include>META-INF/*.RSA</include><include>META-INF/*.MF</include></includes><excludes><exclude>META-INF/*</exclude></excludes></resource></resources>141<resources>2<resource>3<directory>src/main/resources</directory>4<includes>5<include>META-INF/*.SF</include>6<include>META-INF/*.DSA</include>7<include>META-INF/*.RSA</include>8<include>META-INF/*.MF</include>9</includes>10<excludes>11<exclude>META-INF/*</exclude>12</excludes>13</resource>14</resources>2、[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project HandleJCYContent: Cannot create resource output directory: F:\workspace_idea\HandleJCYCon tent\target\classes -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project HandleJCYContent: Cannot create resource output directory: F:\workspace_idea\HandleJCYContent\target\classesat org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at ng.reflect.Method.invoke(Method.java:497)at unchEnhanced(Launcher.java:289)at unch(Launcher.java:229)at uncher.mainWithExitCode(Launcher.java:415)at uncher.main(Launcher.java:356)Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot create resource output directory: F:\workspace_idea\HandleJCYContent\target\classesat org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:307)at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)... 20 moreCaused by: org.apache.maven.shared.filtering.MavenFilteringException: Cannot create resource output directory: F:\workspace_idea\HandleJCYContent\target\classesat org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources(DefaultMavenResourcesFiltering.java:215)at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:301)... 22 more[ERROR][ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR][ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1]391[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project HandleJCYContent: Cannot create resource output directory: F:\workspace_idea\HandleJCYCon 2tent\target\classes -> [Help 1]3org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project HandleJCYContent: Cannot create resource 4output directory: F:\workspace_idea\HandleJCYContent\target\classes5at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)6at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)7at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)8at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)9at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)10at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)11at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)12at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)13at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)14at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)15at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)16at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)17at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)18at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)19at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)20at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)21at ng.reflect.Method.invoke(Method.java:497)22at unchEnhanced(Launcher.java:289)23at unch(Launcher.java:229)24at uncher.mainWithExitCode(Launcher.java:415)25at uncher.main(Launcher.java:356)26Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot create resource output directory: F:\workspace_idea\HandleJCYContent\target\classes27at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:307)28at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)29at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)30... 20 more31Caused by: org.apache.maven.shared.filtering.MavenFilteringException: Cannot create resource output directory: F:\workspace_idea\HandleJCYContent\target\classes 32at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources(DefaultMavenResourcesFiltering.java:215)33at org.apache.maven.plugin.resources.ResourcesMojo.execute(ResourcesMojo.java:301)34... 22 more35[ERROR]36[ERROR] Re-run Maven using the -X switch to enable full debug logging.37[ERROR]38[ERROR] For more information about the errors and possible solutions, please read the following articles:39[ERROR] [Help 1]解决:target⽂件被占⽤,关闭其他程序。
-jar命令用法-概述说明以及解释

-jar命令用法-概述说明以及解释1.引言1.1 概述在Java开发中,-jar命令是一个经常使用的命令,用于执行打包为jar 文件的Java应用程序。
它为我们提供了一种方便的方式来启动和运行独立的Java应用程序,无需考虑类路径的问题。
使用-jar命令时,我们只需要提供jar文件的路径作为参数,Java虚拟机(JVM)会自动搜索并加载jar文件中的主类作为应用程序的入口点。
这使得我们可以将整个应用程序打包到一个jar文件中,方便部署和发布。
与传统的java命令相比,-jar命令有一些独特的特性。
首先,它会忽略类路径(即不会加载classpath中的类),而是只加载jar文件中的类。
这使得我们可以确保应用程序只使用了我们想要的类,而不会引入其他不必要的类或版本冲突。
其次,-jar命令还可以让我们在jar文件中指定一个清单文件(manifest),其中可以包含额外的元数据和配置信息。
通过这种方式,我们可以在运行应用程序时传递一些参数或配置信息,而不必在命令行中逐个指定。
另外,-jar命令还能够处理一些常见的问题,比如自动解压缩jar文件、加载外部依赖库等。
这些功能使得我们可以更加方便地打包和分发我们的应用程序,减少了很多繁琐的配置和部署步骤。
总之,-jar命令是Java开发中一个非常有用的工具,它简化了应用程序的启动和部署过程,提高了开发效率。
在本文的接下来部分,我们将详细介绍如何正确地使用-jar命令,以及一些常见问题的解决方法。
1.2 文章结构文章结构部分的内容:文章结构是指文章的整体框架和组织方式,它对于读者来说具有重要的指导作用。
本文将按照以下结构展开介绍-jar命令的用法。
首先,文章将引言部分,对本文的主题进行概述。
我们将介绍-jar命令在Java开发中的重要性以及它的基本功能和作用。
同时,我们还会介绍本文的文章结构和目的,以便读者可以清晰地了解本文的内容和目标。
接下来,正文部分将涵盖两个要点。
Java项目打包成Jar文件后图片不显示的问题解决

出现这种问题的原因大多是因为路径的问题,往往是在项目中运行正常,但是一旦打包成Ja r后就不能正常显示了,下面总结一下解决此类问题的方法:一、通过使用外部资源文件的方式解决把项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar 文件放在该目录下,只要代码对图片文件的引用路径正确,如:Imag eIconimag e=new Imag eIcon(Swin gReso urceM anage r.get Image("ima gefil ePath"));就可以了。
这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文件在项目根目录下。
二、通过使用内部资源文件的方式解决把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。
这种方式在具体代码中应使用下面其中一种:1.Ima geIco n ima ge =new I mageI con(t his.g etCla ss().getRe sourc e("im agefi lePat h"));2.I mageI con i mage= new Imag eIcon(main.clas s.get Resou rce("image fileP ath"));3.Imag eIcon = Sw ingRe sourc eMana ger.g etIma ge(ma in.cl ass,"image fileP ath");4.3.Ima geIco n = S wingR esour ceMan ager.getIm age(t his.g etCla ss(),"imag efile Path");3和4中第一个参数代表图片文件路径的参照对象,不能少,否则不能正确获得图片资源。
java-jar命令运行jar包时指定外部依赖jar包

java-jar命令运⾏jar包时指定外部依赖jar包你们都知道⼀个java应⽤项⽬能够打包成⼀个jar,固然你必须指定⼀个拥有main函数的main class做为你这个jar包的程序⼊⼝。
具体的⽅法是修改jar包内⽬录META-INF下的MANIFEST.MF⽂件。
好⽐有个叫作test.jar的jar包,⾥⾯有⼀个拥有main函数的main class:test.someClassName。
咱们就只要在MANIFEST.MF⾥⾯添加以下⼀句话:htmlMain-Class: test.someClassName⽽后咱们能够在控制台⾥输⼊java -jar test.jar便可以运⾏这个jar。
可是咱们这个项⽬须要引⽤其余第三⽅的jar包,在eclipse⾥⾯以项⽬jar包的形式引⽤了这个叫作some.jar的包,当时放在项⽬的lib⼦⽬录下,最后项⽬打包时把这个some.jar也打进来了,可是⽤java -jar执⾏这个test.jar的时候报找不到Class异常,缘由就是jar引⽤不到放在本⾝内部的jar包。
那怎么办?运⾏时将其加⼊classpath的⽅式⾏不⾏?就是在运⾏jar的同时加⼊classpath参数:javajava -classpath some.jar -jar test.jar这种⽅式是不⾏的,由于使⽤classpath指定的jar是由AppClassloader来加载,java命令加了-jar 参数之后,AppClassloader就只关注test.jar范围内的class了,classpath参数失效。
那该怎么引⽤其余的jar包呢?linux⽅法1、使⽤Bootstrap Classloader来加载这些类算法咱们能够在运⾏时使⽤以下参数:sql-Xbootclasspath:彻底取代系统Java classpath.最好不⽤。
-Xbootclasspath/a: 在系统class加载后加载。
使用idea调试java-jarxxx.jar方式启动

使⽤idea调试java-jarxxx.jar⽅式启动
今⽇思语:希望是什么?希望就是你还在挣扎中。
使⽤idea调试tomcat项⽬
idea是⼀个功能强⼤的java开发⼯具,可以很⽅便的帮助开发⼈员进⾏开发⼯作。
1、有时我们通过使⽤java -jar xxx.jar⽅式启动可执⾏jar时,我们可以通过idea进⾏debug操作。
⽰例如下:我们先通过 mvn clean install 构建可执⾏的jar包(此处使⽤springboot打包插件进⾏打包),之后打开控制台,通过java -jar⽅式启动jar
C:\Users\admin\Desktop>java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar mytest.jar
这⾥address指定⼀个地址端⼝,与后⾯idea设置的要⼀致,执⾏上述命令,可以看到监听了5005端⼝:
2、在idea上添加⼀个你服务对应的Remote连接
设置相关的内容
之后就可以启动这个连接了
启动之后控制台那边就开始启动了
后⾯就可以使⽤idea进⾏debug操作了
3、在控制台看到的⽇志不够详细,可以将⽇志打印到⼀个⽂件中,只需在启动命令后⾯加上重定向到⽂件即可
后续就可以查看log.log⽂件看具体的⽇志信息了。
解决spring-boot打成jar包后启动时指定参数无效的问题
解决spring-boot打成jar包后启动时指定参数⽆效的问题spring-boot打成jar启动时指定参数⽆效今天后台项⽬进⾏修改,使⽤spring.profiles来指定启动时使⽤的配置⽂件。
在项⽬中添加好配置⽂件后使⽤java -jar .\base-exec.jar --spring.profiles.active=dev --server.port=9121启动时参数注⼊不进去。
检查配置⽂件书写的规则,这⾥把规则说⼀下我们在开发Spring Boot应⽤时,通常同⼀套程序会被应⽤和安装到⼏个不同的环境,⽐如:开发、测试、⽣产等。
其中每个环境的数据库地址、服务器端⼝等等配置都会不同,如果在为不同环境打包时都要频繁修改配置⽂件的话,那必将是个⾮常繁琐且容易发⽣错误的事。
对于多环境的配置,各种项⽬构建⼯具或是框架的基本思路是⼀致的,通过配置多份不同环境的配置⽂件,再通过打包命令指定需要打包的内容之后进⾏区分打包,Spring Boot也不例外,或者说更加简单。
在Spring Boot中多环境配置⽂件名需要满⾜application-{profile}.properties的格式,其中{profile}对应你的环境标识,⽐如:application-dev.properties:开发环境application-test.properties:测试环境application-prod.properties:⽣产环境⾄于哪个具体的配置⽂件会被加载,需要在application.properties⽂件中通过spring.profiles.active属性来设置,其值对应{profile}值。
如:spring.profiles.active=test就会加载application-test.properties配置⽂件内容下⾯,以不同环境配置不同的服务端⼝为例,进⾏样例实验。
针对各环境新建不同的配置⽂件application-dev.properties、application-test.properties、application-prod.properties在这三个⽂件均都设置不同的server.port属性,如:dev环境设置为8080,test环境设置为9090,prod环境设置为80application.properties中设置spring.profiles.active=dev,就是说默认以dev环境设置测试不同配置的加载:执⾏java -jar xxx.jar,可以观察到服务端⼝被设置为8080,也就是默认的开发环境(dev)执⾏java -jar xxx.jar --spring.profiles.active=test,可以观察到服务端⼝被设置为9090,也就是测试环境的配置(test)执⾏java -jar xxx.jar --spring.profiles.active=prod,可以观察到服务端⼝被设置为80,也就是⽣产环境的配置(prod)按照上⾯的实验,可以如下总结多环境的配置思路:application.properties中配置通⽤内容,并设置spring.profiles.active=dev,以开发环境为默认配置application-{profile}.properties中配置各个环境不同的检查setAddCommandLineProperties配置在应⽤中管理配置并不是⼀个容易的任务,尤其是在应⽤需要部署到多个环境中时。
关于jarfile打开闪退问题
关于jarfile打开闪退问题后⾯才发现,原来是因为我把⽂件拖⼊了新建的⽂件夹,改变了路径,⽽且我的java环境没有配置好是全局变量,所以新建⽂件夹之后,就会出现找不到了路径,闪退的问题,,,还有就是,跟⼀个软件或者是可执⾏的.exe ⼀般是会带有其他模块⽂件的,不能随便删去,或者改名字。
可能有两个⽅⾯的原因,⼀个是因为你的java环境没有配置好,⼀般这样的话,建议重装环境,多装⼏次,没有坏处,,,在这⾥要讲⼀讲批处理⽂件,这种⽂件是可以在运⾏窗⼝执⾏的,可以说相当于在⽂件所在的地⽅开了⼀个快速通过运⾏窗⼝运⾏某⼀功能的结果,就相当于是⼀个快捷⽅式吧。
右键单击新建⽂本⽂件,之后在终端复制命令(就是那个你想直接快捷实⾏的的命令),然后复制在⽂本⽂件⾥⾯再保存,之后把⽂件的后缀名改为加上.bat的。
第⼆个是路径的问题,关于全局变量和环境变量,,路径在jar包的属性⾥⾯查看,打开运⾏窗⼝,cmd指令,cd 加上jar包的⽬录,在它的⽬录下去运⾏jar包,我的问题是闪退,不懂怎么回事的,,指令⼀定要正确,多⼀个空格,⼤⼩写不分都不⾏,,Windows PowerShell 可以在运⾏端⼝直接输⼊指令打开。
Windows PowerShell 是⼀种命令⾏和脚本环境,使命令⾏⽤户和者可以利⽤的强⼤功能。
它引⼊了许多⾮常有⽤的新概念,从⽽进⼀步扩展了您在 Windows 和 Windows Script Host 环境中获得的知识和创建的脚本。
Windows PowerShell v3将伴随着Microsoft 3.0和发布。
PowerShell v3是⼀个Windows任务⾃动化的框架,它由⼀个⾏shell和内置在这个.NET框架上的编程语⾔组成。
PowerShell v3采⽤新的cmdlet让管理员能够更深⼊到系统进程中,这些进程可以制作成可执⾏的⽂件或脚本(script)。
⼀条cmdlet是⼀条轻量命令,Windows PowerShell运⾏时间在⾃动化脚本的环境⾥调⽤它。
tomcat加载jar异常问题的分析与解决
tomcat加载jar异常问题的分析与解决现象描述:项⽬使⽤springboot启动⼀个web项⽬,在启动阶段看到console中出现了异常“1.10.3-1.4.3\hdf5.jar 系统找不到指定的⽂件”,虽然这些异常不影响项⽬的正常运⾏,但作为⼀个严谨的技术⼈员,看到这些异常就像见到仇⼈⼀样,⼀定要除之⽽后快。
java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5.jar (系统找不到指定的⽂件。
)at java.util.zip.ZipFile.open(Native Method)at java.util.zip.ZipFile.<init>(ZipFile.java:225)at java.util.zip.ZipFile.<init>(ZipFile.java:155)at java.util.jar.JarFile.<init>(JarFile.java:166)at java.util.jar.JarFile.<init>(JarFile.java:130)at pat.JreCompat.jarFileNewInstance(JreCompat.java:188)at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:374)at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:309)at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:266)at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:229)at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104)at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5204)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1421)at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1411)at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)at java.util.concurrent.FutureTask.run(FutureTask.java)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at ng.Thread.run(Thread.java:748)2019-03-29 18:09:08.303 WARN 16940 --- [ost-startStop-1] o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/D:/.m2/repository/org/bytedeco/javacpp-presets/hdf5-platform/1.10.3-1.4.3/hdf5-linux-x86.jar] from classloader hierarchy java.io.FileNotFoundException: D:\.m2\repository\org\bytedeco\javacpp-presets\hdf5-platform\1.10.3-1.4.3\hdf5-linux-x86.jar (系统找不到指定的⽂件。
java.lang.ClassNotFoundException的解决方法
ng.ClassNotFoundException的解决⽅法出现这个问题的原因可能很多,但是最终原因都是部署的项⽬⽂件中没有这个类包。
那么出错的点在哪呢?逐⼀排除!1.⾸先在项⽬⽂件中没有添加相应的jar包,可以在maven dependencis⽂件夹中看是否有。
如果没有,在pom⽂件添加依赖配置即可;如果有,还是出现问题转第⼆步2.在maven的本地仓库中找到对应的jar包⽂件,双击试图打开它,如果出现报错说⽂件已经损坏或者不完整(我猜测可能是以前maven下载的时候因为⽹络的原因中途断掉没有下载完成, 下次pom在maven仓库引⼊本地jar包的时候不会再从官⽹下载,直接拿的是上次那个残缺⽂件,所以会出错),解决办法就是把这个jar包⽂件删除,重新update pom⽂件,让maven重新下载这个jar到本地仓库。
如果发现本地仓库的这个jar包打开也不会报错,那么转第三步。
3.最后的原因是没有将maven⼯程的jar包发布到部署的项⽬⽂件中。
进⼊到tomcat的部署路径.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\下检查了⼀下,发 现⼯程部署后在WEB-INF⽂件夹下没有⽣成lib⽬录,正常情况下,会⽣成lib⽬录并把⼯程的所有依赖jar包都部署到该⽬录下。
解决⽅案:1).右键点击项⽬--选择Properties选择Deployment Assembly,在右边点击Add按钮,在弹出的窗⼝中选择Java Build Path Entries。
如下图所⽰:2).点击Next,选择Maven Dependencies3)点击Finish,然后可以看到已经把Maven Dependencies添加到Web应⽤结构中了操作完后,重新部署⼯程,不再报错了。
然后我们再到.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\⽬录下,发现⼯程WEB-INF⽬录下⾃动⽣成了lib⽬录,并且所有的依赖jar包也都已经部署进来。