-
答案:Java程序报“找不到主类”通常因类名不匹配、类路径错误或包结构问题导致。需确保文件名与公共类名一致且包含正确main方法;使用-cp指定类路径并包含当前目录;若类在包中,须按包结构存放文件并从根目录执行;注意IDE与命令行输出路径差异,确保class文件位置正确。
-
macOS中Java环境失效主因是路径配置错误、Shell未加载或sudo重置环境;需依次检查java-version、$JAVA_HOME、/usr/libexec/java_home-V等命令输出,再按zsh配置、Maven路径冲突、sudo环境隔离三类问题分别修复。
-
final类本身不直接触发JVM内联,但其方法因不可重写而省去虚方法查表,内联与否取决于方法大小、调用频率和JIT阈值,而非是否final。
-
IllegalArgumentException用于参数校验,当传入参数不合法时抛出,如null值、数值越界、字符串格式错误等,可通过thrownewIllegalArgumentException("消息")主动抛出,并推荐使用Objects.requireNonNull简化null检查,提升代码健壮性与可读性。
-
Java中==比较值或地址,equals()默认比较地址但可重写为内容比较;基本类型只能用==,引用类型==比地址、equals()需重写才按内容比较。
-
Linux上transferTo可能不生效,因源/目标通道类型、文件系统或内核版本不满足零拷贝条件而静默降级为用户态拷贝。
-
Java封装底层异常的核心动机是解耦与语义收敛:隔离实现细节、统一错误码与日志、防止敏感信息泄露、提升方法签名可读性;应设计轻量可扩展的AppException基类,包装时用addSuppressed替代cause并提取关键信息,AOP仅作兜底而非主责。
-
Condition.await()不能替代Object.wait()随意调用,因必须先持有对应ReentrantLock锁,否则抛IllegalMonitorStateException;await()自动释放锁,唤醒后需重新竞争锁,且须置于while循环中防虚假唤醒。
-
ExceptionUtils.getStackTrace()是ApacheCommonsLang提供的将Throwable转为完整堆栈字符串的方法,用于日志记录、告警或监控上报等需全量堆栈的场景,不输出到控制台。
-
Set接口保证元素不重复但不保证顺序;HashSet依赖hashCode()和equals()去重,需同步重写且避免可变字段;TreeSet要求元素可比较,否则运行时抛ClassCastException;LinkedHashSet保持插入顺序但内存开销更大。
-
推荐使用Logback或Log4j2结合SLF4J记录异常日志;2.在catch块中应使用logger.error(message,throwable)完整输出堆栈;3.避免仅调用printStackTrace()或忽略异常;4.根据异常类型合理使用warn或error级别;5.通过MDC添加用户ID、请求ID等上下文信息提升排查效率。
-
IDEA启动提示“NoJDKspecified”需手动配置JDK路径:通过Configure→ProjectDefaults→ProjectStructure→SDKs添加JDK根目录(如C:\ProgramFiles\Java\jdk-17.0.1),再在ProjectSettings中指定该SDK;若仍报“Cannotresolvesymbol‘String’”,需同步检查ModuleSDK与ProjectSDK一致,并确认pom.xml中java.version兼容。
-
必须用Files.list()配try-with-resources读取文件列表,过滤前校验Files.isReadable();删除前检查isRegularFile()/isDirectory()及目录是否为空;复制大文件需流式缓冲并支持进度;Swing中改用定时轮询+Files.walk()差分监听变更。
-
NullPointerException总在运行时才报,因为Java仅在调用null引用的方法、访问其字段或数组长度时抛出,编译器不检查空值,JVM也不提前拦截。
-
Wrapper类用于将基本类型包装为对象,以支持集合、泛型、null值及工具方法;每种基本类型对应首字母大写的包装类;Java5起支持自动装箱/拆箱,但需注意缓存范围(-128~127)和equals比较。