You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译带外部Jar的Java程序后执行提示找不到主类求助

解决Java运行时找不到主类WriterSample的问题

我来帮你分析下问题所在,以及对应的解决办法:

你的WriterSample.java开头有包声明package com.spotfire.samples;,这意味着Java虚拟机需要在com/spotfire/samples/这个层级目录下找到WriterSample.class文件才能正确加载类,但你之前的编译命令只是把class文件生成在了当前根目录,没有按照包结构存放,所以运行时会出现找不到主类的错误。

正确的操作步骤:

  1. 重新编译,生成符合包结构的class文件
    使用-d参数指定输出目录(这里用.表示当前目录),让编译器自动创建对应的包目录并把class文件放入正确位置:

    javac -cp "sbdf.jar" -d . WriterSample.java
    

    执行完这个命令后,你会在当前目录下看到com/spotfire/samples/WriterSample.class文件,这才是符合Java包规范的存放方式。

  2. 使用全限定类名运行程序
    运行时不能再直接写WriterSample,而要使用完整的「包名+类名」,同时保持类路径包含当前目录和sbdf.jar:

    • 如果你用的是Linux/macOS系统:
      java -cp .:./sbdf.jar com.spotfire.samples.WriterSample output.sbdf
      
    • 如果你用的是Windows系统,注意类路径的分隔符是;而非::
      java -cp .;sbdf.jar com.spotfire.samples.WriterSample output.sbdf
      

    别忘了加上程序要求的输出文件参数output.sbdf,你的代码里明确需要传入一个参数指定生成的SBDF文件名。

按照上述步骤操作后,程序应该就能正常运行并生成目标文件了。

内容的提问来源于stack exchange,提问作者Bo Qiang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:03:04