博客分类:
由于定义了以java开始的包(java.mypackage),编译时错误:
java.lang.SecurityException: Prohibited package name: java.mypackage
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:479)
at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Exception in thread "main"
根据异常信息,定位到java.lang.ClassLoader.preDefineClass进行排查,发现以下代码片断:
/* Determine protection domain, and check that:
- not define java.* class,
- signer of this class matches signers for the rest of the classes in package.
private ProtectionDomain preDefineClass(String name,
ProtectionDomain protectionDomain)
if (!checkName(name))
throw new NoClassDefFoundError("IllegalName: " + name);
if ((name != null) && [color=red]name.startsWith("java.")[/color]) {
throw new SecurityException("Prohibited package name: " +
name.substring(0, name.lastIndexOf('.')));
if (protectionDomain == null) {
protectionDomain = getDefaultDomain();
if (name != null)
checkCerts(name, protectionDomain.getCodeSource());
return protectionD
// true if the name is null or has the potential to be a valid binary name
private boolean checkName(String name) {
if ((name == null) || (name.length() == 0))
if ((name.indexOf('/') != -1)
|| (!VM.allowArraySyntax() && (name.charAt(0) == '[')))
可以看出preDefineClass方法首先对类名进行了检查,发现以java作为一级包名,则抛出安全异常:禁止使用的包名!
这条安全异常是由Java类加载的“双亲委派模型”(详见)所导致的。在双亲委派模型中,由父加载类加载的类,下层加载器是不能加载的。本例中最高层加载器BootstrapClassLoader加载了classpath路径下所定义的java.*包内的类,而java.research包就不能由BootstrapClassLoader的下层加载器AppClassLoader加载了。这也是java安全机制中对于恶意代码所采取的防护措施。
浏览 27828
浏览: 154286 次
来自: 成都
我想问一下,为什么插入CLOB字段的时候要先插入空CLOB,e ...
狂赞楼主!
16:09:14 org.apache.c ...
那怎么解决这种问题呢?
看看 看看 看看 看看
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'1.方法如图:
2.如下图:
intellij idea取消重复代码提醒的功能
操作步骤:
File -& Setting -& Inspections -& General -& Duplicated Code 设置为不打勾√即可。...
Intellij IDEA 取消重复代码提示
idea find duplicated code 关闭idea的 duplicated code 提示
利用idea开发的时候有重复代码提示非常不方便,并不是所有的代码都可以合并,如果想去掉可以在在setting里设置如下图
把Duplicated Code的√去掉就好了...
Intellij IDEA duplicate code 提示如何关掉
有时候多个项目里写了相系的方法名称,或者是原的有项目的情况。但在IDEA 里老提示duplicate code, 那就很不爽了, 虽然提示是让大家明白需要重构代码,但是这往往又不是短时间内能做的。 所...
IntelliJ IDEA 代码检查规范QAPlug
静态检查规范
Avoid Array Loops
数组之间的拷贝使用System.arrayCopy更加高效
byte[] ReceiveBytes = new byte[length1+ le...
本身是一个不错的功能,为了减少一定量的重复代码,提醒开发人员注意,但是如果有时几行代码的重复没必要扔到一个统一的地方处理,这是总是提醒,干扰视线。这里根据个人习惯,还是关闭这个功能比较好。...
Intellij IDEA 取消重复代码提示
1.打开idea的setting选项2.选择inspections栏目3.选择General选项,将duplicated code后面的勾给它去掉就OK了...
File-&Setting-&Edit-&Inspections:将圈中Duplicate Code勾选取消即可。
IntelliJ idea 2017 卸载
没有更多推荐了,扣丁学堂Java开发之Springboot在IDEA热部署配置方法详解
今天扣丁学堂Java培训老师给大家主要介绍一下关于Springboot在IDEA热部署的配置方法,以及IntellijIDEA4种配置热部署的方法,下面我们一起来看一下吧。
1、pom.xml文件
注:热部署功能spring-boot-1.3开始有的
&!--添加依赖--&
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-devtools&/artifactId&
&!--optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入--&
&optional&true&/optional&
&/dependency&
注:project中添加spring-boot-maven-plugin,主要在eclipse中使用,idea中不需要添加此配置。
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-maven-plugin&/artifactId&
&configuration&
&fork&true&/fork&
&/configuration&
&/plugins&
2、更改idea配置
1)“File”-&“Settings”-&“Build,Execution,Deplyment”-&“Compiler”,选中打勾“Buildprojectautomatically”。
2)组合键:“Shift+Ctrl+Alt+/”,选择“Registry”,选中打勾“compiler.automake.allow.when.app.running”。
3Chrome禁用缓存
F12或者“Ctrl+Shift+I”,打开开发者工具,“Network”选项卡下选中打勾“DisableCache(whileDevToolsisopen)”
IntellijIDEA4种配置热部署的方法
热部署可以使的修改代码后,无须重启服务器,就可以加载更改的代码。
第1种:修改服务器配置,使得IDEA窗口失去焦点时,更新类和资源
菜单Run-&EditConfiguration,然后配置指定服务器下,右侧server标签下onframedeactivation=Updateclassesandresource。
优点:简单
缺点:基于JVM提供的热加载仅支持方法块内代码修改,只有debug模式下,并且是在idea失去焦点时才会出发热加载,相对加载速度缓慢
第2种:使用springloadedjar包
a.下载jar包,github:https://github.com/spring-projects/spring-loaded
b.启动应用时添加VM启动参数:-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar-noverify
优点:对Spring系列框架支持好(不含Springboot),支持成员级别的修改(增删改方法、字段、注解),支持对枚举值集。
缺点:与优点相对
第3种:使用spring-boot-devtools提供的开发者工具
spring-boot项目中引入如下依赖
&dependency&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-devtools&/artifactId&
&/dependency&
优点:简单,支持Spring-boot项目,支持成员级别的修改热部署。
缺点:只支持spring-boot项目。
第4种:使用Jrebel插件实现热部署(该插件14天免费试用)
在线安装:菜单File-&Setting-&Plugin,点击右侧底部Browserepositories,弹出框顶部输入:JRebleforIntellij,选中安装即可。
优点:强大,对各类框架支持,并且提供IDE插件的方式。
最后3种方法是基于类加载机制来实现热加载的,因此你修改完成代码后必须重新编译当前代码,才能触发热部署,Eclipse默认就支持了自动编译,而在IntellijIDEA中默认是关闭了自动编译的,可以按照如下2步设置开启:
IDEA开启项目自动编译,进入设置,Build,Execut,Deployment-&Compiler勾选中左侧的BuildProjectautomatically
IDEA开启项目运行时自动make,ctrl+shift+a搜索命令:registry-&勾选compiler.automake.allow.when.app.running
以上就是关于Java开发培训之Springboot在IDEA热部署的配置方法,希望对大家有所帮助。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
扣丁学堂专注于IT教育视频教程学习,汇总了时下全新的IT领域技术
扣丁学堂时刻更新全新的IT领域技术学习路线图
今日搜狐热点