问题:编译错误: j已在main(java.lang.String [])中定义
答案:
这个错误通常是由于在代码的 main 方法中使用了 j 这个变量名,导致编译器无法识别这是一个常量还是方法名。为了解决这个问题,请更改 j 的名称或使用其他字母。
main
j
名词概念:
分类:
应用场景:
推荐的腾讯云相关产品:
产品介绍链接地址:
注意:以上链接地址可能会随着腾讯云产品的更新而变化,请复制链接到浏览器中查看最新内容。
最近在使用eclipse编写java程序时遇到这样一个问题: 错误在类中找不到main方法,请将main方法定义为 public static void main(String[] args)否则...JavaFX 应用程序类必须扩展javafx.application.Application 看到这样的问题让我一头雾水,因为main方法已经写出 解决这个问题可以点开eclipse ->window
当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件。那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做【加载 】。...启动类加载器BootstrapLoader只能加载JAVA_HOME\jre\lib中的class类(即J2SE API),问题是标准API中确实有一个java.lang.String(注意,这个类和我们自定义的类是完全两个类...BootstrapLoader以为找到了这个类,毫不犹豫的加载了j2se api中的java.lang.String。...最后出现上面的加载错误(注意不是异常,是错误,JVM退出),因为API中的String类是没有main方法的。...结论:我们当然可以自定义一个和API完全一样的类,但是由于双亲委托模型,使得我们不可能加载上我们自定义的这样一个类。所以J2SE规范中希望我们自定义的包有自己唯一的特色(网络域名)。
,编译时e为Person类型,没有school成员变量,因而编 译错误。...= new Person(); e.getInfo(); Student e = new Student(); e.getInfo(); 虚拟方法调用(多态情况下) 子类中定义了与父类同名同参数的方法...and java.lang.String are in module java.base of loader 'bootstrap') at ConversionTest.main(ConversionTest.java...(e.getschool()); //非法,编译时错误 if (e instanceof Student) { Student me = (Student) e; // 将e强制转换为Student类型...对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的 实例变量,这个实例变量依然不可能覆盖父类中定义的实例变量 接下来我们说下,目前学习中我听过最中二的名字终极父类(Objext)
要理解的关键概念是,可变参数的方法被实现为如果可变参数被打包在一个数组中。 InvokeMain示例演示了如何调用任何类中的main()入口点,并在运行时传递一组参数。...在这种情况下,问题在于具有int参数的构造函数的存在阻止了编译器生成默认(或零参数)构造函数,并且代码中没有显式的零参数构造函数。...许多 Class 中的方法可以用于它们。反射为数组和枚举提供了一些特定的 API。本课程使用一系列代码示例来描述如何区分这些对象与其他类,并对其进行操作。还将检查各种错误。...Class.getEnumConstants() 可以检索在枚举中定义的枚举常量。java.lang.reflect.Field.isEnumConstant() 表示一个字段是否是一个枚举类型。...(EnumTrouble.java:22) 提示: 明确实例化枚举是一种编译时错误,因为这将阻止定义的枚举常量保持唯一。
通配符 通配符的扩展 自定义泛型方法 "擦除"实例 类型参数的类型推断 自定义泛型类 泛型方法和泛型类的比较 泛型和反射 通过反射获得泛型的实际类型参数 本文对泛型的基本知识进行较为全面的总结...super Integer > collection4= new ArrayList();//编译不通过 自定义泛型方法 C++模板函数 template T add...(T x, T y){ return (T)(x+y); } 而java的泛型基本上完全在编译器中实现,用于编译器执行类型检查和类型判断,然后生成普通的非泛型的字节码,这种实现技术为“擦除”(... void swap(T[]a,int i,int j){ T temp = a[i]; a[i] = a[j]; a[j] = temp;...例如: swap(new String[3],1,2) -> static void swap(E[]a,int i,int j) 当某个类型变量在整个参数列表的所有参数和返回值中的多处被应用了
与 Java 动态编译相结合,可以实现非常强大的功能。...1)编译期执行过程 源码----(编译器编译)---->可执行文件(如Hello.java---->Hello.class)。...注:编译期只是做了一些翻译功能,并没有把代码放在内存中运行,只是把代码当成文本进行操作,比如检查错误。...(多用于参数的传递) 对象.getClass():通过实例变量的getClass()方法,getClass()方法在Object类中定义着,即所有对象皆有此方法。...如Class.forName(“java.lang.String”)。 注:全类名即包名.类名(多用于配置文件,将类名定义在配置文件中。
•扩展类:Java\jdk1.7.0_25\jre\lib\ext目录中的文件,用-extdirs设置。 •用户自定义类:用-classpath设置。...\bin] 如果利用 -bootclasspath 重新定义: javac -bootclasspath src Xxx.java,则会出现下面错误: 致命错误: 在类路径或引导类路径中找不到程序包...: 找不到或无法加载主类 h.jar 这个错误是没有指定main类,所以类似这样来指定: E:\codeplace\n_learn\java\javacmd\build>java -cp h.jar com.yp.test.HelloWorld...先下一个jar包 这里直接下 log4j * main函数改成 import com.yp.test.entity.Cat; import org.apache.log4j.Logger; public...15:19:57,359 INFO [HelloWorld] 这是log4j hello,keyboard 说明: 这个log4j配置文件,习惯的做法是放在src目录下, 在编译过程中 copy到
•扩展类:Java\jdk1.7.0_25\jre\lib\ext目录中的文件,用-extdirs设置。•用户自定义类:用-classpath设置。...\bin] 如果利用 -bootclasspath 重新定义:javac -bootclasspath src Xxx.java,则会出现下面错误: 致命错误: 在类路径或引导类路径中找不到程序包 java.lang...: 找不到或无法加载主类 h.jar 这个错误是没有指定main类,所以类似这样来指定: E:\codeplace\n_learn\java\javacmd\build>java -cp h.jar com.yp.test.HelloWorld...先下一个jar包 这里直接下 log4j * main函数改成 import com.yp.test.entity.Cat; import org.apache.log4j.Logger; public...15:19:57,359 INFO [HelloWorld] 这是log4j hello,keyboard 说明: 这个log4j配置文件,习惯的做法是放在src目录下, 在编译过程中 copy到build
•扩展类:Java\jdk1.7.025\jre\lib\ext目录中的文件,用-extdirs设置。 •用户自定义类:用-classpath设置。...\bin] 如果利用 -bootclasspath 重新定义: javac -bootclasspath src Xxx.java,则会出现下面错误: 致命错误: 在类路径或引导类路径中找不到程序包 java.lang...: 找不到或无法加载主类 h.jar 这个错误是没有指定main类,所以类似这样来指定: E:\codeplace\n_learn\java\javacmd\build>java -cp h.jar com.yp.test.HelloWorld...先下一个jar包 这里直接下 log4j * main函数改成 import com.yp.test.entity.Cat; import org.apache.log4j.Logger; public...15:19:57,359 INFO [HelloWorld] 这是log4j hello,keyboard 说明: 这个log4j配置文件,习惯的做法是放在src目录下, 在编译过程中 copy到build
为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢?...printString(java.lang.String, Print); public static void main(java.lang.String[]...我们在代码中定义一个lambda$0这个方法: public static void PrintString(String s, Print print)...通过javap对上述错误代码进行反编译,反编译之后输出的类的成员如下所示: public class Lambda { public Lambda(); public static void PrintString...static void main(java.lang.String[]); private static void lambda$0(java.lang.String); } 竟然发现lambda
为了支持函数式编程,Java 8引入了Lambda表达式,那么在Java 8中到底是如何实现Lambda表达式的呢? Lambda表达式经过编译之后,到底会生成什么东西呢?...main(java.lang.String[]); private static void lambda$0(java.lang.String); } 由上面的代码可以看出编译器会根据 Lambda...我们在代码中定义一个 lambda$0 这个的函数,最终代码如下所示: @FunctionalInterface interface Print { public void print(T...,因为存在两个 lambda$0 函数,如下所示,是运行时的错误: Exception in thread "main" java.lang.ClassFormatError: Duplicate method...ClassLoader.java:357) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495) 通过 javap 对上述错误代码进行反编译
•扩展类:Java\jdk1.7.0_25\jre\lib\ext目录中的文件,用-extdirs设置。 •用户自定义类:用-classpath设置。...\bin] 如果利用 -bootclasspath 重新定义: javac -bootclasspath src Xxx.java,则会出现下面错误: 致命错误: 在类路径或引导类路径中找不到程序包...: 找不到或无法加载主类 h.jar 这个错误是没有指定main类,所以类似这样来指定: E:\codeplace\n_learn\java\javacmd\build>java -cp h.jar com.yp.test.HelloWorld...先下一个jar包 这里直接下 log4j * main函数改成 import com.yp.test.entity.Cat; import org.apache.log4j.Logger; public...15:19:57,359 INFO [HelloWorld] 这是log4j hello,keyboard 说明: 这个log4j配置文件,习惯的做法是放在src目录下, 在编译过程中 copy到build
注意这个命令需要调用后才会触发日志,相似的还有watch、trace等 2、jad 反编译指定已加载类的源码 有时候,版本发布后,代码竟然没有执行,代码是最新的吗,这时可以使用jad反编译相应的class...java.lang.String ([BII)V java.lang.String ([BLjava/nio/charset/Charset;)V java.lang.String...查看String中toString的详细信息 sm -d java.lang.String toString declaring-class java.lang.String method-name...jdk中的方法,可以看到输出少了很多 trace -j cn.test.mobile.controller.order.OrderController getOrderInfo '#cost > 10'...反编译OrderController,默认情况下,反编译结果里会带有ClassLoader信息,通过--source-only选项,可以只打印源代码。
[] | 完整分析字节码文件中的常量池二进制数据 ) ; 一、编译生成带局部变量表的字节码文件 ---- 在 IntelliJ IDEA 中编写如下两个源码 : Java 类源码 : 在 setName...= 1; int k = 2; } } 在 main 函数中 创建上述 Student 类对象 : 一定要写这个 main 函数 , 否则虚拟机编译优化时 , 发现 setName...中的局部变量没有使用 , 直接优化掉 , 不生成相关的 局部变量表 ; public class Main { public static void main(String[] args) {..., 定义了 3 个局部变量 , 将 setName 方法的对应字节码的附加信息提取出来单独分析 , 该方法对应的字节码数据中 , 肯定有局部变量表 ; public void setName(java.lang.String...在 编译时 , 就已经在字节码文件中 生成好了 , 在 类加载器 将字节码文件加载到内存中时 , 直接将 字节码中的数据加载到 LocalVariableTable: Start
举个例子 我们先举一个最简单的例子: @Slf4j public class TypeErase { public static void main(String[] args) {...我们定义了一个ArrayList,其中指定的类型是String。...但是实际上代码编译出错: Error:(18, 16) java: 不兼容的类型: java.util.ArrayList无法转换为java.util.ArrayList...java中的泛型是在编译时做检测的。而编译后生成的二进制文件中并不保存类型相关的信息。...但是在编译的过程中,编译器发现了两者的类型不同,然后抛出了错误。
,比如自己定义只定义一个有参数的构造函数之后,会出现错误: 比如我定义了一个构造函数: public Person(String name, int age) { this.age...(hello.java:47) 所以大家以后再编写使用Class实例化其他类的对象的时候,一定要自己定义无参的构造函数 【案例4】通过Class调用其他类中的构造函数 (也可以通过这种方式通过Class...final java.lang.String name; public static final int age; 【案例9】其实还可以通过反射调用其他类中的方法: class hello...同时也是java中默认的加载器。 如果想要完成动态代理,首先需要定义一个InvocationHandler接口的子类,已完成代理的具体操作。...sub.say("Rollen", 20); System.out.println(info); } } 【运行结果】: Rollen 20 类的生命周期 在一个类编译完成之后
; } } 没有什么,就单纯的定义一个java.lang.String 类。 会报错吗?可以说会,也可以说不会。 先说为什么不会报错。 从语法的角度以及编译,都不会报错。 为什么会报错?...错误: 在类 java.lang.String 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX...应用程序类必须扩展javafx.application.Application 错误信息里面提到在类 java.lang.String 中找不到 main 方法,这不是有毛病吧,我这String类里明细有...,所以,就优先加载了rt.jar包中String类了,这个类里确实也没有main方法,所以就报错了呗。...到此,我们就搞清楚了为什么没有main的错误信息的原因了。
: appending output to ‘nohup.out’ [root@VM_0_8_centos 80]# tail -f nohup.out linux下tomcat端口被占用的问题 错误代码...错误代码 Caused by: java.net.BindException: 地址已在使用 [root@VM_0_8_centos 80]# tail -f nohup.out 2019-12-15...] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit...:35:17.936 INFO 20885 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory...:07:49.607 WARN 24428 --- [p-nio-80-exec-2] com.qcl.aspect.SellerAuthorizeAspect : 【登录校验】Cookie中查不到
/groupId> wsdl4j 1.6.2 ...在右侧出现的Maven菜单中选择编译项目(compile) 2.2 项目启动 编译成功后进入 Bootstrap中,启动main方法 出现如下提示,说明启动成功,只是中文乱码了 2.3 解决中文乱码问题...) 重启服务 启动正常,但是访问的时候出现了问题 2.4 解决不支持JSP的问题 启动成功后,在访问首页的时候,出现了500错误,而且提示无法为JSP编译类。...原因是无法编译jsp。...解决也很简单,按照下面步骤操作即可 上面的报错解决方式,可以在org.apache.catalina.startup.ContextConfig类中的configureStart方法中,添加一下JSP解析器初始化即可
领取专属 10元无门槛券
手把手带您无忧上云