IntelliJ IDEA

Stella981
• 阅读 648

jetbrain开发的IDE,用于Java、Groovy、Scala等的开发:

  • Ultimate Edition:商业版本,功能完善,免费试用30天;
  • Community Edition:社区免费版本,功能有所精减,开源且license是Apache 2.0,可用于google android开发;

工具下载最新版本信息

version:2017.1
build:IC-171.3780.107

具体参考:IntelliJ IDEA 官网

  • 智能补全功能、快捷键功能;
  • Java开发常用插件均已集成,maven、git、svn、tomcat、jetty、jrebel、Gradle等;

IntelliJ IDEA是一个屡获殊荣的Java和Groovy开发环境,认为是当前Java开发效率最快的IDE工具。

The most intelligent IDE for Java platform.

安装配置

IDEA的环境配置、插件、工具等均在:FIle | Settings | ...

注意,Scala SDK的版本号需要IntelliJ IDEA的支持;Scala Plugins的版本号必须跟本机IntelliJ IDEA的版本号(build.txt)匹配,下载的.zip格式的Scala插件无需解压、放到Intellij安装的plugins目录下,点击 Install plugin from disk... 直接安装zip文件即可(同时最好将其解压到 IDEA 的 /plugin 目录下)。

  • IDE: IntelliJ IDEA Community Edition 2017.1.exe
  • Java SDK: jdk-8u101-windows-x64.zip
  • Scala SDK: scala-2.12.1.msi/zip
  • Scala Plugins: scala-intellij-bin-2017.1.15.zip
  • Intellij IDEA 已集成 maven 插件

或者下载idea的2019版本:https://blog.csdn.net/qq_26462167/article/details/84873112

个性化设置,在 File | Settings | ... 下:

  • 显示工具条:菜单 | View | ToolBar,选中
  • 显示行号:... | Editor | General | Appearance | show line numbers
  • 注释不顶格:Code Style | Java | Code Generation -> Comment Code
  • 字体、代码风格设置:... | Editor | General | Colors & Fonts,参考:http://www.phperz.com/article/15/0923/159059.html
    •  UI界面字体
    •  代码编辑区字体
  • 基于Sublime主题设置:不同的monokai主题的jar包,IDEA Color Themes
  • 禁止IDEA自动重新打开上次的项目:... | Appearance & Behavior | System Settings | Reopen last project on startup
  • 打开多个IDEA窗口:... | Appearance & Behavior | System Settings | Open project in new window,然后File–Reopen即可

注意,Settings is for now, Other Settings is for all,同时,Platform Settings中也是全局配置。

运行调试

IntelliJ IDEA

其他快捷键

注释:单行(ctrl + /)、多行(ctrl + shift + /)
ALT+Enter:智能提示
Shift+F6:批量更改Refactor
ALT+F7:类似于EClipse的 show call history,查看被谁调用
Ctrl+B:导航至定义位置
Ctrl+P/Q:方法参数提示显示
Alt+Insert:代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等 
Ctrl + Alt + L:格式化代码,可以对当前文件和整个包目录使用
Ctrl + Alt + 左方向键:退回到上一个操作的地方 (必备)
Ctrl + Alt + 右方向键:前进到上一个操作的地方 (必备)

其他快捷键信息,参见:https://www.cnblogs.com/jajian/p/8012603.html

关于Debug调试的基本使用,参见:https://www.cnblogs.com/jajian/p/9410844.html

基本使用

IDEA的工作空间叫 Project ,一个 Project下提倡放一个项目。

.idea文件夹和 ProjectName.iml是 IDEA建立的辅助文件夹和文件,类似于 Eclipse工作空间下建立的 .settings文件夹和 .classpath 、.project文件。

在 IntelliJ IDEA里面 “new Project” 就相当于 Eclipse 的 “workspace”,而 “new Module” 才是创建一个工程项目。

关于基础知识,参见:JaJian' Blogs - IntelliJ Idea

(1)Java 程序

  • File | New | Project | Java ...,新建项目工程;
  • 文件夹 src 右键,New | Java Class (Kind : Class) ...,添加 .java 代码;

(2)Scala 程序

  • File | New | Project | Scala ...,新建项目工程;
  • 文件夹 src 右键,New | Scala Class (Kind : Object) ...,添加 .scala 代码;

参考:Instruction:Your first lines of code | Scala

Scala 默认为每个源文件加入如下引用

  • import java.lang._
  • import scala._
  • import Predef._

编译器 scalac 将 .scala 源文件编译成 .class 文件,Java虚拟机加载并运行 .class 文件。关于 FileName.scala 编译生成的 FileName.class 和 FileName$.class 文件的理解,参考:scala编译的class字节码实现。其中,以$结尾的类就是所谓的虚构类(Synthetic Class)。

源码中的孤立对象A中的字段和方法,都被编译成以孤立对象A的名字命名的 A.class 中的静态方法, 这些静态方法都会通过单例的虚构类 A$.class 的实例化对象访问相应的实例方法。虚构类是传统意义上的单例模式,并且在类初始化时就创建唯一的对象。

  • 源码中单例对象的所有字段和方法都会在虚构类中有相对应的成员
  • 虚构类中的信息只和单例对象有关,单例对象的伴生类不会影响虚构类中的内容

(3)Java + Scala 程序

IDEA 支持 Java 和 Scala 代码互操作。

关于利用 Maven 构建工程项目的问题:利用IntelliJ IDEA与Maven开始你的Scala之旅

Maven 项目最重要三个参数的设置页面,这三个参数分别:

GroupId,  **ArtifactId**, Version

利用maven+plugin方式构建 scala应用,.java可以与 .scala在一个项目中混合使用。推荐目录结构:

IntelliJ IDEA

遇到的问题

Error:scalac: Error: object VolatileLongRef does not have a member create

这是因为 scala version mismatch problem: XxxRef.create was added from Scala 2.11,统一开发环境和系统的scala版本即可。

IDEA 中提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

IDEA 中提示:Warning:java: 目标值1.5已过时, 将在未来所有发行版中删除

这是因为 IDEA 默认把项目的源代码版本设置为 jdk1.5,目标代码设置为 jdk1.5,需设置为本地 jdk 版本号。

在项目 pom.xml 文件中添加:

<properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
</properties>

或者修改 Maven 的 Settings.xml 文件添加如下内容:

<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> 
    </properties>
</profile>

其中,Settings.xml 文件在 Maven 插件的安装路径。

文件修改后,IDEA会在右上角提示 "Enable Auto-Import",点击会自动引入jar,之后IDEA将在源码jdk版本、目标jdk版本使用Maven中配置的jdk版本。

IntelliJ IDEA

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

这是 Hadoop 环境变量的配置问题,解决方法:

Hadoop_Home:Hadoop 解压路径
Path:%Path%;%Hadoop_Home%\bin

或者,直接在程序代码中添加

System.setProperty("hadoop.home.dir", "Hadoop解压路径");

如果 Hadoop_Home 为空,必然会引起上述问题。具体参考:http://www.cnblogs.com/hyl8218/p/5492450.html

Hadoop "Unable to load native-hadoop library for your platform" warning

这只是一个 Warning,并不会影响 Hadoop 的功能。Compiled Version 的问题,用 idea64.exe 打开重新编译即可。

具体参考:http://stackoverflow.com/questions/19943766

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/SqhTest/lib/spark-streaming-kafka-assembly_2.10-1.3.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/SqhTest/lib/spark-assembly-1.3.0-hadoop2.7.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN Continuable parsing error 39 and column 23
log4j:WARN The content of element type "log4j:configuration" must match "(renderer*,throwableRenderer?,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)".

这是 SLF4J 多重绑定的问题,出现的原因有两种情况:

  • 直接引用了相同的 日志.jar包
  • 不同的 .jar包 引用了相同的 日志jar包

 不过,该问题不会影响日志记录和程序功能,但是尽量避免之。

具体参考:https://www.oschina.net/question/93435_174549http://stackoverflow.com/questions/22896243

说明:目前运行环境为 Spark 1.3 + Scala SDK 2.10.4,如何使用 高版本Spark + Scala SDK 2.11/2.12,有待于进一步研究。现阶段,先用此配置学习之

参考

IntelliJ IDEA - features | 官网

从Eclipse转移到IntelliJ IDEA一点心得为何 IntelliJ IDEA 比 Eclipse 更好

IntelliJ IDEA 简体中文专题教程IntelliJ IDEA专讲 - YouMeek

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
IDEA00 IDEA知识点汇总
一、从头搭建IDEA开发环境https://mp.weixin.qq.com/s/6jXHzkU8JfubhDsQJbwl8Q(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fmp.weixin.qq.com%2Fs%2F6jXHzkU8JfubhDsQJbwl8Q)1下
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这