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相关推荐

  1. java环境classpath_JAVA中的环境变量配置 PATH CLASSPATH

    1.CLASSPATH是什么?它的作用是什么? 首先,classpath 是javac编译器的一个环境变量.它的作用与import.package关键字有关.当你写下improt java.util. ...

  2. JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用。

    JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用. 今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找 ...

  3. pdfparser java_如何使用java从PDF中提取内容?

    在Java编程中,如何使用java从PDF中提取内容? 项目的目录结构如下 - Tika的工具包可从以下网址下载:http://tika.apache.org/download.html ,只下载:t ...

  4. java环境classpath_Java开发环境配置之Path和classpath

    在进行Java环境配置时,都会遇到Path和classpath的配置,为什么要这两个系统环境变量,以及如何配置呢?特作以下总结. 1.Path的作用: Path是一个十分重要的系统变量,它的值是一些路 ...

  5. java程序中用户名和密码_在Java应用程序中使用密码术

    java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...

  6. 在Java应用程序中使用密码学

    这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 . 这些服务可以通过特定于 ...

  7. 在独立Java应用程序中使用Tomcat JDBC连接池

    这是从我们的客人文章W4G伙伴克拉伦斯豪的作者临春3从A按. 您可能会在文章结尾找到本书的折扣券代码,仅适用于Java Code Geeks的读者! 请享用! 在需要数据访问权限的独立Java应用程序 ...

  8. java unsafe park_Java中Unsafe类详解

    http://www.cnblogs.com/mickole/articles/3757278.html Java不能直接访问操作系统底层,而是通过本地方法来访问.Unsafe类提供了硬件级别的原子操 ...

  9. cmd编译整个java项目_cmd中使用javac对整个包编译怎么办?对包里面的某几个java文件编译怎么办?...

    展开全部 JAVAC 命令62616964757a686964616fe59b9ee7ad9431333335306262详解 结构 javac [ options ] [ sourcefiles ] ...

最新文章

  1. php print_r this,PHP 打印函数之 print print_r
  2. nginx 加路由时报错_Nginx自定义模块编写:根据post参数路由到不同服务器
  3. 阿里专家常昊:新人如何上手项目管理?
  4. spring security原理图及其解释
  5. python清空屏幕代码_python 清屏
  6. 李宏毅机器学习笔记——Transformer
  7. SAP 与 3大财务报表
  8. Spring Security 集成 OIDC 项目编码 | 认证(三)
  9. 基于STM32-F401的平衡小车
  10. 人工智能html5背景,HTML5人工智能基础及实践
  11. msvcp140.dll丢失的解决方法win10
  12. springboot根据request.getSession().getServletContext().getRealPath(“/“); 访问项目静态资源问题
  13. ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...
  14. ArcGIS坡度的提取
  15. 如何评价 Typora? - Markdown 编辑器 Typora 的红与黑
  16. 原北京计算机学院并入那个学校了,北京高校合并历史,仅存一所本科“联合大学”的诞生...
  17. 分布式数据库系统作业
  18. 国家行政区划地区编码表
  19. 【visual studio 2017】基本使用过程,新手教学
  20. 第三方登录access token过期问题

热门文章

  1. 编程艺术第二十三 四章 十一续 杨氏矩阵查找 倒排索引关键词Hash编码
  2. 天然奥兹克蜡的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 关于我在字节跳动青训营做了个抖音这件事
  4. linux禁止rm运行,Linux之劫持rm命令实现安全删除和屏蔽删除/、/*
  5. 微信小程序开发——form表单
  6. 叹服,阿里自述 SpringCloud 微服务:入门 + 实战 + 案例,一网打尽
  7. 叹服!华为JDK负责人手写HotSpot VM源码744页大神笔记
  8. android 系统打开USB调试模式
  9. 为什么 0x 不像看起来那么无需信任
  10. 在Matlab中绘制阿基米德螺线