问题集锦 - smile0821/learngit GitHub Wiki

修改nginx对http请求数据大小限制

client_max_body_size 1000m; nginx -s reload

springboot附件上传超限org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException

application.properties中修改 spring.servlet.multipart.enabled=true spring.servlet.multipart.maxFileSize=100MB spring.servlet.multipart.maxRequestSize=100MB https://blog.csdn.net/weixin_38306434/article/details/89633328 Spring Boot 1.3 版本:multipart.maxFileSize Spring Boot 1.4 版本和 1.5 版本:spring.http.multipart.maxFileSize Spring Boot 2.0 版本:spring.servlet.multipart.maxFileSize tomcat 的 maxPostSize吧(默认2M,修改为-1即可,tomcat8之后,0不行了)

Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext

1>问题描述: 用Tomcat启动一个Maven项目时,启动不起来,报错如下:

03-Dec-2019 20:32:21.358 严重 [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/fendo-SSM]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1129)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1871)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@7822458a]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
	at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4969)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5099)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@58b14405]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:135)
	at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:707)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
	... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
	at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:113)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	... 16 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
	at java.util.zip.ZipFile.read(Native Method)
	at java.util.zip.ZipFile.access$1400(ZipFile.java:60)
	at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:717)
	at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:419)
	at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
	at sun.misc.IOUtils.readFully(IOUtils.java:65)
	at java.util.jar.JarFile.getBytes(JarFile.java:425)
	at java.util.jar.JarFile.getManifestFromReference(JarFile.java:193)
	at java.util.jar.JarFile.getManifest(JarFile.java:180)
	at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:111)
	... 17 more

开始一直关注 “Failed to start component ”这个错误,网上找了很多方法,都不行,后来看到还有一个错误是“java.util.zip.ZipException: invalid LOC header (bad signature)”,然后从这里入手,发现是mvn下载的jar包邮问题导致的,下面给出解决办法 2>解决方法 右键项目->Run as-> Maven test, 这里一定要注意:不要看到控制台打印出BUILD SUCCESS就认为是没问题的,要仔细看控制台的信息,如果出现 [WARNING] 读取C:\Users\PC.m2\repository\org\springframework\spring-jdbc\4.3.12.RELEASE\spring-jdbc-4.3.12.RELEASE.jar时出错; invalid LOC header (bad signature) [WARNING] 读取C:\Users\PC.m2\repository\org\springframework\spring-aspects\4.3.12.RELEASE\spring-aspects-4.3.12.RELEASE.jar时出错; invalid LOC header (bad signature) [WARNING] 读取C:\Users\PC.m2\repository\javax\servlet\jstl\1.2\jstl-1.2.jar时出错; invalid LOC header (bad signature) 类似于如上的信息,就找到本地maven仓库的地址把出错的jar包删除掉,然后重新maven update一下,重新下载jar包,再启动就没问题了

Multiple markers at this line

  • The type javax.servlet.ServletContext cannot be resolved. It is indirectly referenced from required .class files
  • The type javax.servlet.ServletException cannot be resolved. It is indirectly referenced from required .class files

严重: Unable to process Jar entry [module-info.class] from Jar [jar:file:/D:/Eclipse/eclipse8/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp4/wtpwebapps/NPTopoService/WEB-INF/lib/classmate-1.5.0.jar!/] for annotations

用好压打开该jar包,发现module-info.class用记事本打开后可以看到其内容,而且在实际项目中,module-info.java经常用来处理模块之间的依赖关系等,此处module-info.class博主选择直接删除,再次 tomcat7:run,成功

git下载代码报错问题

打开eclipse中的windows-->Preferences-->Team-->Git-->Configuration-->User Settings.然后点Add Entry新建一个键值对,输入http.sslVerify=false

java.lang.OutOfMemoryError: Java heap space Heap size

 一、java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。  解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m   建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。  二、java.lang.OutOfMemoryError: Java heap space Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。  解决方法:手动设置Heap size 修改TOMCAT_HOME/bin/catalina.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"   三、实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " 

java如何获取文件的大小

 public static String getPrintSize(long size) {         // 如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义         if (size < 1024) {             return String.valueOf(size) + "B";         } else {             size = size / 1024;         }         // 如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位         // 因为还没有到达要使用另一个单位的时候         // 接下去以此类推         if (size < 1024) {             return String.valueOf(size) + "KB";         } else {             size = size / 1024;         }         if (size < 1024) {             // 因为如果以MB为单位的话,要保留最后1位小数,             // 因此,把此数乘以100之后再取余             size = size * 100;             return String.valueOf((size / 100)) + "." + String.valueOf((size % 100)) + "MB";         } else {             // 否则如果要以GB为单位的,先除于1024再作同样的处理             size = size * 100 / 1024;             return String.valueOf((size / 100)) + "." + String.valueOf((size % 100)) + "GB";         }     } public class TestFile {

         public static void main(String[] args) {                  File file=new File("E:/smzjmcb.dmp");         String name = file.getName();                  System.out.println(name);         long length = file.length();         System.out.println(length);                  String printSize = Utils.getPrintSize(length);         System.out.println(printSize);     }      }

数字转字符串

String.format("%010d", 25); //25为int型 0代表前面要补的字符 10代表字符串长度 d表示参数为整数类型

hibernate在数据库生成hibernate_sequence表问题

@GeneratedValue(strategy = GenerationType.AUTO)主键增长方式由数据库自动选择,当数据库选择sequence方式时,出现如上错误。 @GeneratedValue(strategy = GenerationType.IDENTITY) 要求数据库选择自增方式,oracle不支持此种方式。 @GeneratedValue(strategy = GenerationType.SEQUENCE)采用数据库提供的sequence机制生成主键。mysql不支持此种方式。 @GeneratedValue(strategy = GenerationType.TABLE)

curl命令

curl -k -v -H "Content-Type:application/json" -X GET https:// curl -k -v -H "Content-Type:application/json" -X POST --data '{"draftId":"32d71e73-41f0-4a08-8338-428d79f0e537","solutionId":"8246","solutionCode":"SOLN000025","draftName":"Draft","userId":"hWX433077"}' "https://10.128.246.122/projectmgr/v1/InsertDraftProject"