我在Windows操作系统,在eclipse IDE工作,我有以下两个场景:
1.我创建了以下类,这是在Employee中。java类(E为大写):
public class Employee {
public static void main(String[] args) {
employee emp = new employee();
emp.test();
}
}
//here e is in lowercase
class employee {
public void test() {
System.out.println("I am in test()");
}
}
在这种情况下,我得到了以下例外:
Exception in thread "main" java.lang.NoClassDefFoundError: employee (wrong name: Employee)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
.
.
.
at Employee.main(Employee.java:4) // i.e at emp.test();
2.我创建了以下类,这是Employee。java类:
public class Employee {
public static void main(String[] args) {
}
}
现在,当我试图在同一个包中创建employee.java(e是小写)类时,我在eclipse中得到了一条消息,即Type具有相同的名称,但存在不同的大小写。
我的问题是:Java是区分大小写的。这是指JVM(基于windows和UNIX)区分大小写还是编译器区分大小写?为什么它在场景1中给出了这个异常,而eclipse不允许我创建employee。场景2中相同位置的java文件。
还记得我在Windows操作系统上,它对文件名不区分大小写,所以我知道它不允许使用employee。java和Employee。java在同一位置。这是否违反了Java的区分大小写原则?
无论如何,按照惯例,类名应该总是以大写开头。
此约定有助于避免您描述的问题。
Windows上的文件系统不区分大小写:Employee.class和employee.class不能位于同一目录中。
场景1,两个类都在同一个java源中定义:编译器创建employee。阶级可能会使雇员过于自负。阶级或别的什么。
使用单独java源代码的场景2:Eclipse将无法创建员工。java与Employee位于同一目录中。java(在Windows文件系统下)。因此,过去有人会小心地以用户友好的方式处理错误。
Java假定区分大小写的名称。
你可以把你的源代码带到Linux,编译成一个新的版本。jar(一种zip格式,同样区分大小写)。然后将jar复制到windows并执行它。
顺便说一下,我认为您已经找到了一种混淆java源代码的新方法,即在Windows下进行反编译。
相关主题是在类/文件名中使用Unicode字母。这涉及到不同的平台、Unicode的不同规范表示(作为一个或两个Unicode代码点)、版本控制系统。
精化:(针对感兴趣的人)
人类字符é
在Unicode中有两种表示形式:
é
e
,加上组合变音符号U-0301,'
(零宽度重音)
不幸的是,不同的操作系统(我被告知)使用不同的规范表示。我曾经想使用版本控制系统hg,但不得不找出,他们缺少对Linux /Windows互操作性的支持。
否则,可以使用java规范化为规范形式。文本规格化器
。
让我们等待:
class CaféMañanaFaçade
这不是Java的限制,而是您试图编写文件的Windows文件系统的限制。在不区分大小写的文件系统上,编译器不能同时写入Employee。分类
和员工。类
到磁盘,因为就FS而言,它们是同一个文件。
如果您可以以某种方式编译到区分大小写的文件系统(例如在Linux),然后将结果类文件打包到JAR中,那么您就可以在Windows上以ZIP文件的形式运行该JAR而不会出错能够包含两个名称只有大小写不同的不同条目。
我们需要从外部系统获取数据,并将其存储在Redis缓存中,然后使用Spring Cacheable annotation检索数据。问题是客户希望数据区分大小写。是否可以使用redis或在redis中进行任何配置来实现这一点。
已迁移至 官方的 awesome mobx
我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)
如果在不同的目录中写入两个具有相同不区分大小写名称的公共Java类,那么这两个类在运行时都不可用。(我在Windows、Mac和Linux上测试了HotSpot JVM的几个版本。如果有其他JVM可以同时使用,我不会感到惊讶。(例如,如果我创建一个名为的类和一个名为的类,如下所示: 我的网站上提供了三个包含上述代码的eclipse项目。 如果尝试我调用在两个类上像这样: typechecker成功
本文向大家介绍Scala案例分类和不可变性,包括了Scala案例分类和不可变性的使用技巧和注意事项,需要的朋友参考一下 示例 Scala编译器默认在参数列表中为每个参数加上前缀val。这意味着,默认情况下,案例类是不可变的。每个参数都具有一个访问器方法,但是没有可变器方法。例如: 在案例类中将参数声明为var会覆盖默认行为,并使案例类可变: 案例类为“可变”的另一个实例是案例类中的值是可变的: 请
问题内容: 在理解Java JDBC ResultSet Types时,有两种滚动类型TYPE_SCROLL_SENSITIVE和TYPE_SCROLL_INSENSITIVE,我知道。但是当我进行实际实施时,我没有看到效果。下面是代码: 当程序到达LINE 39时,我从后端更新了数据库以进行记录。对于TYPE_SCROLL_INSENSITIVE,它不显示应执行的更新记录,但对于TYPE_SCR