Assembly-CSharp.dll 方法体缺失的排查记录
记录一次 Unity 项目里 Assembly-CSharp.dll 方法体莫名消失的排查过程,从编译错误、程序集定义、条件编译到文件损坏,梳理了几种常见原因和定位手段。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-08-10 12:00:36 Tomcat 启动失败 Java 日志 调试
Tomcat起不来这事儿,遇多了就会发现,翻来覆去就那么几个坑,但每次排查都免不了要四处翻文档。索性把用得上的步骤整理下来,下次直接对着查。
多数时候,启动卡住或者秒退,第一反应应该去看 logs/catalina.out。如果日志里能看到明确报错,事情反而简单。比如看到 java.lang.OutOfMemoryError,就是 JVM 堆内存不够,去 bin/catalina.sh(Linux)或 bin/catalina.bat(Windows)里给 JAVA_OPTS 加上 -Xms512m -Xmx1024m,或者按实际机器内存调整。
如果是 Permission denied,给 bin 下面的脚本加执行权限就行,chmod +x bin/*.sh,别忘了检查 webapps、logs 这些目录的读写权限——要是之前用 root 解压的,用普通用户跑就得 chown -R 把属主改过来。
也有时候 catalina.out 里没什么有用信息,进程直接消失。这种可以先把日志级别调高。conf/logging.properties 里改一行:
1catalina.org.apache.juli.FileHandler.level = FINE
重启之后能看到更多启动细节,包括一些被吞掉的异常。
端口冲突也是常见的,默认 8080 被 IIS 或者另一个 Tomcat 占了。Windows 下跑 netstat -ano | findstr 8080 能看到占用进程的 PID,手动停掉或者换个端口。
换端口在 conf/server.xml 里,把 Connector port="8080" 改成 8081 之类的,再重启。
环境变量没配对,启动脚本找不到自己的家目录,也会直接挂。
先确认 CATALINA_HOME 和 CATALINA_BASE 指向正确的安装路径,Path 里带上 %CATALINA_HOME%\bin。在终端 echo 出来看一眼,不费什么时间。JDK 版本也别忽略,Tomcat 9 要求 JDK 8 以上,java -version 看一眼大版本,低了会报 unsupported class version,这个坑有些人一路配到底才发现。
再往下,如果这些地方都查了还是起不来,就得上调试模式。Windows 下在 catalina.bat 里加一行:
set JPDA_OPTS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
然后 catalina.bat jpda start。Linux 直接在 catalina.sh 里改 JPDA_OPTS,再 ./catalina.sh jpda start,远程连上 8000 端口 debug。
还有一类问题跟缓存有关。work 和 temp 目录里偶尔会残留损坏的编译文件,导致后续启动失败。直接把这两个目录清掉:
rm -rf work/* temp/* (Linux) del /q work* temp* (Windows)
清完再启动,有时候就好了。
如果这些全都做了,依然不行,那可以怀疑文件本身有损坏,直接去 apache 官网重新下一份干净的包解压,把原有配置和应用挪过去,通常比继续耗着排查更快。
最后顺手贴一个我常用的启动脚本模板,把改端口、设环境变量、启动和看日志串在一起,免得每次都手动敲。
export CATALINA_HOME=/opt/tomcat export PATH=$PATH:$CATALINA_HOME/bin sed -i 's/8080/8081/' $CATALINA_HOME/conf/server.xml $CATALINA_HOME/bin/startup.sh tail -f $CATALINA_HOME/logs/catalina.out
基本上按这个顺序摸一遍,大部分启动问题都能定位到,剩下一些奇怪的坑就得靠具体日志贴到 StackOverflow 上找答案了。
记录一次 Unity 项目里 Assembly-CSharp.dll 方法体莫名消失的排查过程,从编译错误、程序集定义、条件编译到文件损坏,梳理了几种常见原因和定位手段。
记录一次排序 NPE 的排查和解决,顺便说下 IDEA 调试集合时 null 元素不显示的问题怎么调整。
当Vue2项目遇上SSE服务器消息推送,Network面板却“悄无声息”?这并非偶然!我们深入探究了导致Event-Stream数据流无法直观显示的多种可能性,包括HTTP响应头、EventSource配置、Vue开发服务器代理及Chrome的调试机制。一同抽丝剥茧,定位问题,让你的SSE数据无所遁形。
面对Java解析XML,DOM与DOM4J是两大主流选择。本文详尽分析标准DOM的内置优势与DOM4J在API简洁性、性能及XPath支持上的卓越表现。无论小型配置还是大型数据处理,助你理解两者差异,做出明智的技术选型。
拥抱Java 8及更高版本带来的日期处理革新!本文聚焦于yyyy-MM-dd格式化,详细对比传统SimpleDateFormat与现代DateTimeFormatter。深入探讨DateTimeFormatter为何成为未来主流,其不可变性、线程安全等核心优势如何助你构建更健壮、高效的应用。是时候升级你的日期格式化方式了!