Java实践中遇到的问题&idea IDEA常用快捷键

debug模式下的讲解

 

自己写给自己的bug:

自动化代码里A方法调用B方法,B调用了C,A单独又调用了C。。。排查了好久,日志有时候保错不准确

objc[1085]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java (0x10c6e24c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10c7be4e0). One of the two will be used. Which one is undefined.

参考博客:https://www.cnblogs.com/taojintianxia/p/8399246.html

一番google后, 找到答案 :

1.close the project in intelliJ
2.File -> New -> project from existing resources
3.use Import from external model (if any)
4.open the project again.

目前发现其实是因为机器上新装了一个JDK, 导致之前项目设置的JDK "人格分裂"

右键项目 -> open module settings -> Project

在project jdk上edit,然后选一个最新的jdk即可

我倒是没有新装jdk,我是升级了IDEA,导致JDK人格分裂。使用如上步骤设置后,运行正常,千万记得不要重新Import Project

要Open

 

idea IDEA常用快捷键

Option + Enter 快速导包或者缺少的方法

格式化快捷键:option+command+L

(如 int a=1; 可以变为int a = 1;        

System.out.println((s1.maleGener ? "男" : "女") + s1.age);  // 条件表达式   成立打印?后面的值,否则打印:后面的值 

System.out.println("s1的性别===" + (s1.isMaleGener()?"男":"女"));

if () {} else {}  有时候{}比较多时,代码包含关系错乱,双击{后可选中该条件后的所有代码,分级清晰

Command +D 复制当前行到下一行

Debug  向下箭头==执行下面的一行代码,一行行往下走

右下箭头==跳入调用方法里 ,一般不会用这个

Command + 删除键   删除当前行 或选中的行

    // JSONObject systemInfo = json.getJSONObject("systemInfo");等同于如下
// 获取json中的某个值,值的类型为json
String trackInfoAppend = json.getString("trackInfoAppend");
// 把获取的value值为json的自动转换为json
JSONObject trackInfoAppendToJson = JSON.parseObject(trackInfoAppend);

无参 有参构造方法快捷键,右击或者command+N,Generate-Constructor,全选,同时生成无参构造方法 有参构造方法

 

选中多行代码向上移动快捷键

option+ shitf+ 键盘向上

 

public static void main(String[] args) {   

    }

快捷键:输入psvm 然后按enter 就可以自动生成啦

 

System.out.println();   快捷键为 sout 

属性封装:也会自动联想

生成get set方法快捷键,右击或者command+N,Generate-Getter and Setter 

command+。收起展开某个方法

 

当前类在的项目工程中的路径、定位。点击X按钮

 

 

方法的重载   @Override   自动联想继承的父类方法,选择-回车

 

Command+shift+R   全局替换字符 方法名 类名

Command+shift+F   全局查找字符 方法名 类名

command + “+”/ command +“-”展开 / 折叠代码块

command + shift + “+” 展开所有代码块

command + shift + “-” 折叠所有代码块

command + shift + 向上箭头 当前选中的代码上移

command + shift + 向下箭头 当前选中的代码下移

 

IntelliJ IDEA 统一设置编码为utf-8编码,开发 测试项目全局都为utf8

Preference- Editor- File Encodings- UTF-8

设置完后重新打开项目就生效了

 

maven指令

脚本接入实验室,定时任务执行

mvn clean compile

mvn compile exec:java -Dexec.mainClass="com.alibaba.sdksearch.ClientParamParse"

 

删除之前的dependency

mvn clean -U test-compile
刷新就ok了

 

常用命令:先执行mvn clean,然后再执行一下mvn package -U ,第二个命令能治百病

 

由于要接入公司的平台,每天定时运行代码,生成报警,钉钉消息。需要用maven指令运行代码,但报错如下

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project clientParamWatch: An exception occured while executing the Java class. com.alibaba.sdksearch.RunProcess -> [Help 1]

原因:

开始以为是 这个类 com.alibaba.sdksearch.RunProcess 没有,jar包依赖 应该没引入,classnotfound是缺少类,运行时发现缺少了。

于是,要把所有的jar包都打好,再放到运行环境

参考博客:https://blog.csdn.net/qq_17213067/article/details/82771745 

【JAVA】idea mac打Jar包build方法及Maven方法
 

但不生效,连续问了8 9个RD大神,最终解决方案如下:

跟着大神学习了一招,把我电脑的代码传到他电脑上,使用如下命令

rsync -e ssh -aP clientParamWatch is@ipv4(地址):src

关于rsync 可以参考 https://blog.csdn.net/cdnight/article/details/78861543

cd /Users/lishan/Desktop/code/clientParamWatch
mvn compile 
mvn  exec:java -pl :clientParamWatch-service -Dexec.mainClass=com.alibaba.sdksearch.RunProcess

// 指定子工程目录

因为是用潘多拉生成的项目,我的主程序在子项目里,需要用pl指定子项目文件。此命令执行时候需要进入到项目路径,再指定主程序入口的文件夹,执行命令

当前路径下查找文件名 :  find . -iname 'Run*.class'

 

 

关于setting.xml

参考博客-非常赞的博客建议仔细学习   https://www.cnblogs.com/jingmoxukong/p/6050172.html?utm_source=gold_browser_extension

settings.xml文件是干什么的,为什么要配置它呢?
从settings.xml的文件名就可以看出,它是用来设置maven参数的配置文件。并且,settings.xml是maven的全局配置文件。而pom.xml文件是所在项目的局部配置。
settings.xml中包含类似本地仓储位置、修改远程仓储服务器、认证信息等配置。

 

settings.xml文件位置
settings.xml文件一般存在于两个位置:
全局配置: ${M2_HOME}/conf/settings.xml
用户配置: 𝑢𝑠𝑒𝑟.ℎ𝑜𝑚𝑒/.𝑚2/𝑠𝑒𝑡𝑡𝑖𝑛𝑔𝑠.𝑥𝑚𝑙𝑛𝑜𝑡𝑒:用户配置优先于全局配置。{user.home} 和和所有其他系统属性只能在3.0+版本上使用。请注意windows和Linux使用变量的区别

 

配置优先级
需要注意的是:局部配置优先于全局配置。
配置优先级从高到低:pom.xml> user settings > global settings
如果这些文件同时存在,在应用配置时,会合并它们的内容,如果有重复的配置,优先级高的配置会覆盖优先级低的

/Users/lishan/.m2/settings.xml

 

每个公司的配置都不一样

<?xml version="1.0"?>

<settings>
    <servers>
        <server>
            <id>snapshots</id>
            <username>snapshotsAdmin</username>
            <password>123456</password>
        </server>
        <server>
            <id>releases</id>
            <username>admin</username>
            <password>screct</password>
        </server>
    </servers>

    <!-- ======================================================================== -->
    <!--  mirror settings                                                         -->
    <!-- ======================================================================== -->
    <mirrors>
        <mirror>
            <id>tbmirror-all</id>
            <mirrorOf>*</mirrorOf>
            <name>taobao mirror</name>
            <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
        </mirror>
    </mirrors>

        <profiles>
                <profile>
                        <id>nexus</id>
                        <repositories>
                                <repository>
                                        <id>central</id>
                                        <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
                                </repository>
                        <repository>
                                <id>snapshots</id>
                                <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
                                <releases>
                                    <enabled>false</enabled>
                                </releases>
                                <snapshots>
                                    <enabled>true</enabled>
                                </snapshots>
                        </repository>
                        </repositories>
                        <pluginRepositories>
                                <pluginRepository>
                                        <id>central</id>
                                        <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
                                </pluginRepository>
                        <pluginRepository>
                                <id>snapshots</id>
                                <url>http://mvnrepo.alibaba-inc.com/mvn/repository</url>
                                <releases>
                                    <enabled>false</enabled>
                                </releases>
                                <snapshots>
                                    <enabled>true</enabled>
                                </snapshots>
                </pluginRepository>
                        </pluginRepositories>
                </profile>
        </profiles>

        <pluginGroups>
                         <pluginGroup>com.alibaba.org.apache.maven.plugins</pluginGroup>
                         <pluginGroup>com.alibaba.maven.plugins</pluginGroup>
        </pluginGroups>

    <activeProfiles>
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>
 

每次下载代码后记得IntelliJ IDEA-Preference-maven-User setting files-选择/Users/lishan/.m2/settings_new.xml

否则pom.xml报错,代码报错

 

 

最近安了最新的版本,导致一些配置需要再设置一遍,参考mac使用idea编译器快捷键的设置

https://jingyan.baidu.com/article/fb48e8bee098446e622e14f6.html
keymap -Default for macOS

 

如遇每次运行代码控制台都飘红显示如下

objc[38151]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java (0x104d0e4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x104d8e4e

这是Mac 上面Java 的一个老Bug了,会在那些使用了Java Agent 的IDEA 上运行应用时触发,但这个错误对程序的运行是无影响的,可以无视,而且,在Java 9和Java 1.8.152 版本里已经修复了,话虽如此,但是看着飘红特不舒服啊!

所以对于这个问题的【解决方案】是:

点击IDEA 最上面菜单的Help-Edit --> Edit Costom Properties,如果没有这个Properties 文件的话,IDEA 会提示创建,创建之后在里面添加如下代码:

idea.no.launcher=true


最后,如果运行了还不行,还飘红报错的话,请重启IDEA,一定有效 

参考博客   https://blog.csdn.net/Lee_my_/article/details/79531282

 

 

问题: 用idea编译项目中java文件时候,提示 
Error:(1, 1) java: 非法字符: ‘\ufeff’ 
Error:(1, 10) java: 需要class, interface或enum 
原因: 编码不一致导致 
解决方法: 右下角将UTF-8 convert 为GBK 然后再转换回来

但上面操作方法可能会造成控制台乱码,解决办法修改/Applications/IntelliJ IDEA.app/Contents/bin下面的idea.vmoptions

在末尾添加   -Dfile.encoding=UTF-8  重启idea 重新运行代码ok

 

https://www.runoob.com/w3cnote/java-json-instro.html

SON 对象与字符串的相互转化

方法作用
JSON.parseObject()从字符串解析 JSON 对象
JSON.parseArray()从字符串解析 JSON 数组
JSON.toJSONString(obj/array)将 JSON 对象或 JSON 数组转化为字符串

实例

//从字符串解析JSON对象

JSONObject obj = JSON.parseObject("{\"runoob\":\"教程\"}");

//从字符串解析JSON数组

JSONArray arr = JSON.parseArray("[\"教程\",\"RUNOOB\"]\n");

//将JSON对象转化为字符串

String objStr = JSON.toJSONString(obj);

//将JSON数组转化为字符串

String arrStr = JSON.toJSONString(arr);

 

 public static String sbCommon(JSONObject json, int count) {
        String currentTime = TimeTransfer.getCurrentTime();

        // 读取的日志里,记录用户行为的时间clientTimeStamp
        String clientTimeStamp = TimeTransfer.clientTimeStamp(json);

        String appScene = json.getString("appScene");
        String device = json.getString("device");

        String systemInfo = json.getString("systemInfo");
        System.out.println(systemInfo + ",systemInfo是字符串。。。");
        // 把获取的json字符串转换为json对象,如  "trackInfoAppend": "{\"ok\":\"雷洛\",\"source_from\":\"home\",\"cn\":\"精选\"}",
        JSONObject systemInfoJson = json.parseObject(systemInfo);
        System.out.println(systemInfoJson + ",从字符串解析JSON对象。。。systemInfoJson是json对象。。。");
        // 解析为json对象后再取值
        String os = systemInfoJson.getString("os");
        System.out.println(os + ",os为系统");
        String version = json.getString("version");

        String sbPrint = ",BUG BUG BUG!!!" + currentTime + "日" + clientTimeStamp + ",第【" + count + "】条数据," + "appScene为:【" + appScene + "】," +
                "os为:【" + os + "】,device为:【" + device + "】,version为:【" + version + "】,=======origialParam的json内容为=======" + json;

        // sbPrint为最终钉钉发送出的消息
//        String sbPrint = sb + sbJoin;
        return sbPrint;
    }

 

idea for mac生成UML图

1.打开Preference-找到plugin

安装完成重启idea

点击File -New -UML sequence

 

如遇idea左侧结构、包 类消失,在顶部展示,可

使用idea有时候会遇到左侧栏的目录结构显示不出来的情况,这时候可以这样解决:

删除该项目根目录下的.idea文件夹;
重启idea即可看到目录结构。

亲测可用

 

Run Debug在顶部右侧去了,如何移动到左侧

View-Toolbar勾选上就行

 

 

待续。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方狱兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值