java - Java 的 CLASSPATH 如何在 Mac 上使用?
问题描述
我目前正在从一本书中学习java,我刚刚接触到了包。我一直将所有文件保存在桌面上,并从 Mac 的终端控制台编译/运行程序。
John-MacBook-Pro:~ john$ cd desktop
John-MacBook-Pro:desktop john$ javac Learning.java.
John-MacBook-Pro:desktop john$ java Learning
.... program executes and so on .....
现在我将.java
文件保存到一个包中(创建一个新文件夹)。让我们称这个包为“书”,我被告知现在运行这样的程序:
javac book/Learning.java
java book.Learning
当然,当我有一个文件夹时,这很有效,但是当子类和更多包被添加到该书文件夹中时,我如何更深入地编译东西?更不用说之后如何运行它们?
这本书可能假设了先验知识,所以它只是直接潜入并告诉我在尝试之前在我的 Macbook 上进行设置CLASSPATH
或使用。-classpath
我在终端上尝试了各种命令,有时它似乎可以编译,我必须手动更改目录才能打开每个文件夹(这是很多类型的命令)。尝试运行任何类总是导致找不到类。每个其他答案似乎已经设置了一些基本的东西,或者用我还不理解的术语进行了解释。
解决方案
当添加更多类时,您将它们全部编译:
javac book/Learning.java book/chapter/Chapter.java ...
您以完全相同的方式运行主类:
java book.Learning
如果你不在包树根目录所在的包中(即你的桌面目录),你可以在类路径中传递它:
java -classpath /users/Leosam/desktop book.Learning
请注意,它在 macOS 上的工作方式与在任何其他平台上相同。
推荐阅读
- office365 - Microsoft Graph - 我们是否需要特定的 Office365 许可证才能使用 Webhooks?
- javascript - Java Script 排序算法可视化工具
- java - 不要在 CloudFormation 中删除堆栈时为 Rds DbInstance 创建快照
- python - 使用 Python3 设置标准输出 UTF8 编码
- java - java - 如何使用优先级队列将arraylist转换为java中的最大堆
- kubernetes - 如何在 Google Kubernetes 上添加 SSL/TLS 证书
- fiware-orion - FIWARE Orion:为什么实体类型是不可变的?
- azure-devops - Where are the definitions for Azure Boards work item types?
- html - 基本编码(具有多个类的 div)
- docker - 在 gitlab ci-cd 中创建文件并将其复制到卷