java中classpath_java中的classpath
classpath在java中是一个绕不过去的坎,我之前的文章中讲过classpath是什么。
1:未打包前classpath就是项目结构中的src文件夹。
2:经过maven打包以后你会在idea中看见一份target文件夹,这里边的classes就是classpath。
3:当你真正运行jar包的时候,如果你要获取jar内的资源,最好使用class.getResource去最为锚点进行定位。
4:当你用java命令执行.class文件时时,当前目录也是classpath(注意:前提.class的源文件.java文件类不能有包名,如果有包名,必须严格按照包名结构存放.class文件,然后在包的最外层执行java命令)
classpath看起来很简单,但实际上要深刻体会并不容易。下边以一个java命令运行.class文件来理解一个classpath吧。
有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示:
“错误:找不到或无法加载主类“
其实原因很简单,我们忽略了2个细节。
1.java指令默认在寻找class文件的地址是通过CLASSPATH环境变量中指定的目录中寻找的。
2.我们忽略了package的影响。
第一个问题好解决:
我们直接在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录
第二个问题看下面分析:
前者无包名,后者有包名。前者直接执行javac会在目录下生成一个.class文件,直接使用java命令运行
(注意:不要带.class后缀),输出和hello world。
后者这样做会报错。
按照java规定,一个类的全名应该是包名+类名。所以应该按照package定义的路径来存放源文件。
即必须会后者创建一个org/will/app/main的文件夹,然后将类放进去编译。
重点来了!
你这个时候在/.../.../org/will/app/main下执行java NewsManager依然会报错。因为实际上,你执行的路径是:/.../.../org/will/app/main/org/will/app/main/NewsManager,因为类中包含了包名,所以重复了。你应该退出到org的上一级文件夹,执行java /app/main/NewsManager。成功输出hello world。
当然,你还有一个方法可以不需要回退org的上一级文件夹,你可以在运行时指定classpath。比如
java classpath /.../... /app/main/NewsManager
复制代码
这样也可以成功运行,输出hello world。
参考文章
https://www.cnblogs.com/wangxiaoha/p/6293340.html
java中classpath_java中的classpath相关推荐
- java环境classpath_JAVA中的环境变量配置 PATH CLASSPATH
1.CLASSPATH是什么?它的作用是什么? 首先,classpath 是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util. ...
- JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。
JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用. 今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找 ...
- pdfparser java_如何使用java从PDF中提取内容?
在Java编程中,如何使用java从PDF中提取内容? 项目的目录结构如下 - Tika的工具包可从以下网址下载:http://tika.apache.org/download.html ,只下载:t ...
- java环境classpath_Java开发环境配置之Path和classpath
在进行Java环境配置时,都会遇到Path和classpath的配置,为什么要这两个系统环境变量,以及如何配置呢?特作以下总结. 1.Path的作用: Path是一个十分重要的系统变量,它的值是一些路 ...
- java程序中用户名和密码_在Java应用程序中使用密码术
java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...
- 在Java应用程序中使用密码学
这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 . 这些服务可以通过特定于 ...
- 在独立Java应用程序中使用Tomcat JDBC连接池
这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...
- java unsafe park_Java中Unsafe类详解
http://www.cnblogs.com/mickole/articles/3757278.html Java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操 ...
- cmd编译整个java项目_cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?...
展开全部 JAVAC 命令62616964757a686964616fe59b9ee7ad9431333335306262详解 结构 javac [ options ] [ sourcefiles ] ...
最新文章
- php print_r this,PHP 打印函数之 print print_r
- nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器
- 阿里专家常昊:新人如何上手项目管理?
- spring security原理图及其解释
- python清空屏幕代码_python 清屏
- 李宏毅机器学习笔记——Transformer
- SAP 与 3大财务报表
- Spring Security 集成 OIDC 项目编码 | 认证(三)
- 基于STM32-F401的平衡小车
- 人工智能html5背景,HTML5人工智能基础及实践
- msvcp140.dll丢失的解决方法win10
- springboot根据request.getSession().getServletContext().getRealPath(“/“); 访问项目静态资源问题
- ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...
- ArcGIS坡度的提取
- 如何评价 Typora? - Markdown 编辑器 Typora 的红与黑
- 原北京计算机学院并入那个学校了,北京高校合并历史,仅存一所本科“联合大学”的诞生...
- 分布式数据库系统作业
- 国家行政区划地区编码表
- 【visual studio 2017】基本使用过程,新手教学
- 第三方登录access token过期问题
热门文章
- 编程艺术第二十三 四章 十一续 杨氏矩阵查找 倒排索引关键词Hash编码
- 天然奥兹克蜡的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 关于我在字节跳动青训营做了个抖音这件事
- linux禁止rm运行,Linux之劫持rm命令实现安全删除和屏蔽删除/、/*
- 微信小程序开发——form表单
- 叹服,阿里自述 SpringCloud 微服务:入门 + 实战 + 案例,一网打尽
- 叹服!华为JDK负责人手写HotSpot VM源码744页大神笔记
- android 系统打开USB调试模式
- 为什么 0x 不像看起来那么无需信任
- 在Matlab中绘制阿基米德螺线