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

MacOS下Java跨包访问静态方法:编译及执行命令咨询

嘿,我来帮你搞定MacOS下的编译和执行步骤,先理清楚关键问题,再给你具体命令:

先修正一个重要错误

你的B类里的import语句写错啦!java.primespackage.mersennepackage.*是无效的——java.开头的包是Java标准库专属的,不能用来定义自己的类。根据你的A类包名mersennepackage以及class文件存放路径,应该把import改成:

import mersennepackage.*;

或者你也可以不用import,直接用全限定类名调用方法:mersennepackage.A.foo();,这样也能正常运行。

编译B.java的命令

假设你的B.java放在/Users/usr/Desktop目录下(如果不是,把路径换成B.java的实际位置),打开终端执行:

javac -cp /Users/usr/Desktop/primespackage B.java
  • 解释:-cp(全称-classpath)用来指定编译器查找依赖类的路径。你的A类class文件在/Users/usr/Desktop/primespackage/mersennepackage里,mersennepackage是包目录,所以类路径要指向包含这个包目录的父目录——也就是/Users/usr/Desktop/primespackage,这样编译器才能找到mersennepackage.A类。
执行B类的命令

编译成功后,同样在终端执行:

java -cp .:/Users/usr/Desktop/primespackage B
  • 解释:这里的类路径需要包含两个部分:
    1. .:表示当前目录,用来找到编译生成的B.class文件;
    2. /Users/usr/Desktop/primespackage:还是A类所在的类路径,确保运行时能找到A类。
      注意哦,MacOS下类路径的多个目录用冒号:分隔,Windows才用分号,别搞混!
额外情况说明

如果你的B.java不在/Users/usr/Desktop,可以直接用绝对路径编译,比如:

javac -cp /Users/usr/Desktop/primespackage /Users/yourname/Documents/B.java

执行的时候,只要把类路径里的.换成B.class所在的目录就行,比如:

java -cp /Users/yourname/Documents:/Users/usr/Desktop/primespackage B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:26:47