当前位置: 首页 > 知识库问答 >
问题:

“.”有什么区别java类名中的“/”?

孔硕
2023-03-14

我是java新手。当我试图在5分钟内学会Maven时,我发现这个命令

java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App

工作方式与

java -cp target/my-app-1.0-SNAPSHOT.jar com/mycompany/app/App

这让我发疯,因为第二个命令中的最后一个参数实际上是一个路径。java类名中的“.”和“/”有什么区别?

我已经查了一些文章,但仍然不明白。

共有1个答案

云霖
2023-03-14

这是一个泄漏出来的实现细节。语言中的类名是点分隔的;类文件格式中的类名是斜杠分隔的。(https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.2.)在大多数情况下,内部名称对用户不可见,但在某些情况下它们确实会泄漏。许多处理类文件的工具会使用替换('.', '/')之类的东西从外部(点)转换为内部(斜杠)名称,这使得内部名称也被工具接受。这就是这里发生的事情。

 类似资料:
  • 在Java,这些有什么区别: 我已经检查了Javadoc多次,但这始终不能很好地解释它。我还运行了一个测试,但这并没有反映出这些方法的调用方式背后的任何真正意义。

  • 问题内容: 在Java中,这些之间有什么区别: 我已经多次检查过Javadoc,但这从来不能很好地解释它。我也进行了测试,但没有反映出调用这些方法背后的任何实际含义。 问题答案: 如果不确定某件事,请尝试先编写测试。 我这样做: 印刷品: 最后一个块中有一个空条目,其中返回一个空字符串。 结果是: 该 名称 是您愿意使用动态加载与类,例如,调用的名称与默认。在一定范围内,所有类都有唯一的名称。 该

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa

  • 问题内容: 我在看一些模拟的OCJP问题。我遇到了一个非常令人困惑的语法。这里是: 为什么输出在和之间变化? 问题答案: 问题只是和您玩弄混乱的空格。 是通常的(不等于)比较。 另一方面: 最好写成如下形式: 因此,这是两个运算符。 首先反转。 然后将其分配回。 赋值运算符返回分配的值。因此,计算结果为true-这就是您要打印的内容。

  • 问题内容: 斯卡拉 在Scala中,哪里可以观察到类和类型之间的差异?为什么这种区别很重要? 在编程Scala时,它只是从语言设计的角度考虑还是具有“实际”影响? 或者是根本,以“固定边界”的类型系统(,来我的心)? 爪哇 在Java中还可以识别出上面提到的许多注意事项/差异/问题? (有关语言的介绍,请参见类型和类之间的区别?。) 问题答案: 当您说“类型”时,我将假设您主要是指静态类型。但是我

  • 问题内容: 直接使用和直接使用父类名称之间有区别吗?例如: 是否有内部之间的差异和? 问题答案: 在 这种情况下 不是。但是 通常 ,尤其是当您使用 多重继承时 ,按照文档中指定 的 方法 委托给 方法解析顺序(MRO)中 的下一个对象 : 返回将方法调用委托给类型的父级或同级类的 代理对象 。这对于访问已在类中重写的继承方法很有用。搜索顺序与所使用的顺序相同,只是类型本身被跳过。 类型的 属性列