IntelliJ IDEA 2017.2 EAP is Here
It’s been only a month and a half since the release of IntelliJ IDEA 2017.1, but it’s time to shed a light on the next major update on which we’re going to work the entire Summer.
Java
Better Gradle UX: progress & environment variables
When Gradle is downloading a wrapper distributive, IntelliJ IDEA will display the progress bar in both Console tool window and Background Tasks popup.
When you run a Gradle task via a Run Configuration, you will be able to specify and/or override environment variables.
On macOS IntelliJ IDEA now respects environment variables defined in the Terminal, which makes its Gradle build consistent with the command line behaviour.
Smarter control flow analysis: number ranges
Java static code analysis has become smarter and now detects issues impossible to catch without deep control flow analysis. For example, numeric comparisons are checked so that they don’t evaluate to true or false all the time.
Usually these warnings are found in dead code, but sometimes they might be a sign of deeper issues. In the example above highlighted code is not reachable because when the value of the index variable becomes equal to the length of the string, it will have already thrown an IndexOutOfBoundsException.
This analysis is aware of loops, casts, and statements like throw, return, if, or switch.
Refactorings: extract a map operation
When you’re extracting a variable inside a Stream API map call, IntelliJ IDEA offers to extract it as a separate map() expression:
JUnit 5 M4: parameterized and repeated tests
Dedicated coding assistance is provided for Parameterized Tests and Repeated Tests.
IntelliJ IDEA warns if you haven’t specified the source of arguments for your test.
It also makes sure that the argument values match the method signature.
IntelliJ IDEA reports suspicious use of both Test and ParameterizedTest annotations together:
Now you get completion and navigation for method names used with MethodSource. IntelliJ IDEA won’t report a method as unused if it has usages in tests with MethodSource.
Reflection API: coding assistance
The coding assistance for Reflection has been improved.
Similar coding assistance has been introduced for Method Handlers and Variable Handlers.
IntelliJ IDEA provides code completion for method and field names as well as their signatures.
If a name refers to a non-existing method, or field, you’ll get a warning.
Same happens when a handler is invoked with wrong parameters.
User Interface
Find in Path: gutter icons, local change markers, focus
Preview panel in Find in Path now has a Gutter where you can see the navigation icons and local change markers.
And, it won’t just disappear when you switch focus away from IntelliJ IDEA, so to close it you have to press Esc.
Better HiDPI support: per-monitor, auto-adjusted font-sizes
Earlier, on Windows and Linux IntelliJ IDEA would scale its UI according to the global settings (primary display), which meant that one scale factor was used across all displays. Right now, on Windows you each of the displays gets its own scale factor (provided it’s an integer value), and support for Linux and fractional values is coming.
Font settings are automatically adjusted based on the display resolution.
Spring
Spring Boot: actuator endpoints
The Run/Debug tool windows for Spring Boot application now have a tab called Endpoints, where you can see the information about the Health and Beans endpoints.
The support for other endpoints (e.g. mapping) is coming soon.
JavaScript
Detecting recursive calls
If you have a recursive call inside a JavaScript or TypeScript function, IntelliJ IDEA will detect it and mark it on the gutter, making your code easier to read and understand.
TypeScript: parameter hints
The Parameter Hints option which was added earlier for Java, is now available for TypeScript, too.
Code rearranging
The Rearrange Code action (earlier available for Java and several other languages), is now available for JavaScript and TypeScript. The arrangement rules can be changed in Settings | Editor | Code Style | JavaScript (or TypeScript) | Arrangement.
That’s it for now. To give these and other new features a try, grab the EAP build from our website, or install it via the Toolbox App.
Since the new version is under heavy development, we’d appreciate any feedback. Please submit bug reports as well as feature requests or simply improvement suggestions to our issue tracker.
Known issue: The users of macOS 10.12.4 (or earlier) may experience significant performance slowdown because of the accessibility issues in the JRE. The issue may be caused by some third-party accessibility applications utilizing A11Y, e.g. Magnet. As a workaround, it’s recommended to disable the application in System Preferences | Security & Privacy | Accessibility. We’re working on fixing this issue.
The Drive to Develop
Franco says:
May 4, 2017Please, add a code to avoid “code rearrange” on certain files, like you add for reformat.
Jiří Pejchal says:
May 4, 2017It would great to have support beside gradle wrapper also for maven wrapper: https://github.com/takari/maven-wrapper
Cris Bennett says:
May 5, 2017The accessibility issue is a severe tradeoff given how many mac apps use the accessibility stuff (I counted up 6 that I can’t practically do without). I think this is the first EAP release I’ve ever had to roll back to the previous version.
Andrey Cheptsov says:
May 5, 2017Sorry to hear that. The fix is already there and will be available with the next EAP update, most likely next week.
Cris Bennett says:
May 8, 2017I’m not complaining. We know what we’re getting into with EAPs. Actually it’s a testament their quality that this is the first time I’ve had to roll back. Still, I look forward to the fix.
Laurent Bourges says:
May 5, 2017Did you update the embedded Marlin renderer in jetbrains Openjdk8 build ?
OpenJDK9 has Marlin 0.7.4 and I am integrating Marlin 0.7.5 inOpenJDK10.
Laurent
Andrey Cheptsov says:
May 5, 2017Yes, we plan to update it soon.
Laurent Bourges says:
May 11, 2017Please keep me informed when you will backport Marlin 0.7.4 from OpenJDK9.
As I will push asap Marlin 0.7.5 in OpenJDK10, you could also upgrade your jdk8 build with this coming patch.
PS: If you want to support my FOSS effort, please promote the Marlin renderer, report your feedback or sponsor me to go on improving Java2d performance
Cheers,
Laurent
Nathan Williams says:
May 5, 2017In day-to-day use, I’ve found the find dialog to be a bit too persistent. It needs to go away when you click to interact with something behind it. (IDEA-172451)
Bas Scholts says:
May 6, 2017Unfortunately, since the PHP plugin isn’t supported, I had to roll back. First time for everything.
Andy Schmidt says:
May 7, 2017What about PHP support?
Boaz Nahum says:
May 8, 2017My plugins are broken after updating to 2017.2.eap
Where can I find the sources, there is no EAP confluence page yet
Andrey Cheptsov says:
May 8, 2017Sorry for inconvenience. The CE sources are now available at https://www.jetbrains.com/idea/nextversion/.
Áxel says:
May 8, 2017Update is unusable for PHP developers and we are not warned about that. Please review new tickets guys: IDEA-172396. Thank you.
meshosk says:
May 9, 2017Same here
Paul says:
May 8, 2017The last EAP was pretty bad from a performance and stability point of view and this one is even worse.
Major problems:
1) The Python plugin appears to be completely unsupported (“Unknown facet type: ‘Python'”).
https://www.dropbox.com/s/8vq50givstirix8/Screenshot%202017-05-08%2008.46.22.png?dl=0
2) The 2017.2 EAP did not install as a separate application and it replaced 2017.1.3. Now I cannot just revert to the older version.
Konstantin says:
May 9, 2017This EAP is quite unstable on MacOs on simple tasks like: search for word “Terminal” in Help->Search box…
Dan Liu says:
May 9, 2017Just upgraded to IU-172.1909.2. It hosed my Android plugin. Does anybody know how to install the Android plugin for IJ Ultimate 2017.2? I really don’t feel like using Android studio instead since we have license for the ultimate version.
Andrey Cheptsov says:
May 11, 2017The Android plugin is bundled with both Ultimate and Community Edition. Please check if it’s enabled in Settings | Plugins.
Jetbrains Customer says:
May 10, 20172017.2 EAP is *completely unusable*. The graphic output is completely fucked. Things just don’t render, or they render behind. Parts of the screen update, but not others. Even the cursor itself rarely displays correctly. Popup messages leave remnants behind, menus don’t always show their contents. This is by far the worst EAP release I’ve ever seen. Oh, and I get constant “font null not found.” errors.
I don’t know what you guys changed, but you really screwed up with this one! Time for some QA I think! (Yes, I know that’s what we’re doing for free, but still…)
Andrey Cheptsov says:
May 11, 2017Sorry about that. Could you please file a bug report with more details (e.g. Yes, we OS, desktop (if Linux) and screenshots?
Claudio Mezzasalma says:
May 12, 2017Hello. When Vaadin plugin will be update to support Vaadin 8?
Sebastian says:
May 23, 2017Are there any Maven updates planned for this cycle. I have recently had several issues with Maven in IntelliJ, such as these:
https://stackoverflow.com/questions/34104305/resource-nexus-maven-repository-index-properties-does-not-exist-in-intellij
https://youtrack.jetbrains.com/issue/IDEA-173130
Sometimes the Maven Index cannot be correctly updated and gets stuck.
Soroka Vladislav says:
May 24, 2017We are investigating Maven indexes issues and some bug fixes have already planned. Also we are evaluating the new feature which can complement or even replace the usage of maven indexes. It’s based on invocation of the maven repositories rest api services. However the ETA is unclear at the moment.
Rodislav Moldovan says:
June 3, 2017I would say that you have to mention as well this part: https://youtrack.jetbrains.com/issue/IDEA-159881
docker-compose .env file and env variables
this has a huge impact on using docker within idea, since this is a show stopper.
Javier Gonzalez says:
June 8, 2017Will TypeScript: parameter hints be available in WebStorm as well?
Andrey Cheptsov says:
June 12, 2017Yes, with v2017.2 as far as I know: https://blog.jetbrains.com/webstorm/2017/05/webstorm-2017-2-eap/#param-hints
Serg says:
June 16, 2017Good day (may be)!
Who know how disable indexing progress in IDEA?
Me seems it infinity activity.
I seeing it and it makes hate my job. I often think what it bullchit never ending… (((
Sense – I have some files which not will be indexing, but I don’t know how exclude them.
Andrey Cheptsov says:
June 16, 20171. Now you can go to Project Structure | Modules | Sources, and mark certain folders as Excluded.
2. With 2017.2 it will be able to pause indexing.
3. With 2017.2 it will be able to mark certain modules as Unloaded and exclude them from indexing. Learn more: https://blog.jetbrains.com/idea/2017/06/intellij-idea-2017-2-eap-introduces-unloaded-modules/
Serg says:
June 16, 2017Andrey, thank for you post.
A temporary fixed it, but files are many and wildcard paths not applied to them, I tied. Very sorry that it not is.
So I will hope, that this approach will help me!
Roddy says:
July 18, 2017Is there a way to manually adjust the new auto-adjusting font sizes? This 36+ pt font in the menus/chrome in my monitors is not helpful and just takes up valuable real estate.
If the answer is ‘no’, I’m going to have to roll back to 2017.1, which I’ve never done before. 🙁
Anton Tarasov says:
July 18, 2017Your problem is not quite clear, but please try to specify the font sizes you prefer in:
1) Settings > Appearance & Behaviour > Appearance > Override default font
2) Settings > Editor > Font > Size
David says:
July 20, 2017I cannot build my Android Project anymore. I got an intenal Error from IntelliJ. I tried so many stuff already to fix this, without success.
Is this fixable?
Error:Internal error: (java.lang.ClassNotFoundException) com.android.prefs.AndroidLocation$AndroidLocationException
java.lang.ClassNotFoundException: com.android.prefs.AndroidLocation$AndroidLocationException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidTarget(AndroidJpsUtil.java:404)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidPlatform(AndroidJpsUtil.java:480)
at org.jetbrains.jps.android.builder.AndroidPreDexBuildTarget.computeRootDescriptors(AndroidPreDexBuildTarget.java:110)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.addRoots(BuildRootIndexImpl.java:72)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.(BuildRootIndexImpl.java:62)
at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:84)
at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:267)
at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)
at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Dmitry Avdeev says:
July 20, 2017Please check your Gradle JVM setting (Build, Execution, Deployment -> Build Tools -> Gradle). It should be 1.8.
David says:
July 21, 2017Hello Dmitry Avdeev,
I checked this settings but i cannot find anything related to Grandle JVM setting. Please see the screenshot below
https://ibb.co/c359LQ
Scott says:
July 21, 2017I am seeing this issue on 3 of my apps after updating. Like David I have tried a lot of stuff without any luck. Any suggestions/help would be appreciated.
Sascha Horn says:
July 25, 2017It is a known bug with the broken android facet
https://youtrack.jetbrains.com/issue/IDEA-176144
Marc says:
July 21, 2017Hotswap is broken with 2017.2
When using “update classes and resources” the application is redeployed after a successful hotswap.
A redeploy only makes sense if the hotswap failed (like adding a new method), but in my case it happens for every hotswap
This happens on Liberty Profile, not sure if other containers are affected as well.
Andrey Cheptsov says:
July 26, 2017If possible, please submit an issue to our tracker: https://youtrack.jetbrains.com/issues/IDEA
Herve C says:
July 24, 2017I have the same problem :
Error:Internal error: (java.lang.ClassNotFoundException) com.android.prefs.AndroidLocation$AndroidLocationException
java.lang.ClassNotFoundException: com.android.prefs.AndroidLocation$AndroidLocationException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidTarget(AndroidJpsUtil.java:404)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidPlatform(AndroidJpsUtil.java:480)
at org.jetbrains.jps.android.builder.AndroidPreDexBuildTarget.computeRootDescriptors(AndroidPreDexBuildTarget.java:110)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.addRoots(BuildRootIndexImpl.java:72)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.(BuildRootIndexImpl.java:62)
at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:84)
at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:267)
at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)
at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Aubrey Falconer says:
July 24, 2017The “Better HiDPI support” in 2017.2 isn’t working for me.
I’m currently running Windows 10 Pro on a 4K laptop with an external 1080p monitor in portrait mode. In the system’s display preferences, I have the laptop’s display scaling set to 175% and the external monitor’s scaling set to 100%. In 2017.1 and all previous builds, the Intellij interface was scaled as expected when maximized on both my laptop’s 4k display or the lower-res 1080p display. In 2017.2, Intellij still looks good on the laptop’s display but is scaled unusably large on the external display. (175% too large, to be precise).
I can temporarily work around this by leaving Intellij on the external monitor and manually overriding font sizes in the Intellij preferences, but this defeats the purpose of working on a laptop to begin with.
Any thoughts on the best solution to this?
Anton Tarasov says:
July 26, 2017Aubrey,
Please use the VM option (Help > Edit Custom VM Options) as a temp workaround:
-Dsun.java2d.uiScale.enabled=false
This will switch the HiDPI mode to the previous one (as in 2017.1). The HiDPI improvement so far only takes effect for displays with integral scale factors only. In 2017.2.1 we plan to provide a fix so that you don’t bother about the option. For more details, please see: https://youtrack.jetbrains.com/issue/JRE-427
Aubrey Falconer says:
July 26, 2017Thanks Anton! 2017.2.1 is working as expected for me.
jeong says:
July 28, 2017please help me ~~~!!!
I have the same problem :
Error:Internal error: (java.lang.ClassNotFoundException) com.android.prefs.AndroidLocation$AndroidLocationException
java.lang.ClassNotFoundException: com.android.prefs.AndroidLocation$AndroidLocationException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidTarget(AndroidJpsUtil.java:404)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidPlatform(AndroidJpsUtil.java:480)
at org.jetbrains.jps.android.builder.AndroidPreDexBuildTarget.computeRootDescriptors(AndroidPreDexBuildTarget.java:110)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.addRoots(BuildRootIndexImpl.java:72)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.(BuildRootIndexImpl.java:62)
at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:84)
at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:267)
at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)
at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Christoph Aschwanden says:
August 3, 2017Same problem here…
Error:Auto build failure: Internal error: (java.lang.ClassNotFoundException) com.android.prefs.AndroidLocation$AndroidLocationException
java.lang.ClassNotFoundException: com.android.prefs.AndroidLocation$AndroidLocationException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidTarget(AndroidJpsUtil.java:404)
at org.jetbrains.jps.android.AndroidJpsUtil.getAndroidPlatform(AndroidJpsUtil.java:480)
at org.jetbrains.jps.android.builder.AndroidDexBuildTarget.doComputeRootDescriptors(AndroidDexBuildTarget.java:135)
at org.jetbrains.jps.android.builder.AndroidBuildTarget.computeRootDescriptors(AndroidBuildTarget.java:70)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.addRoots(BuildRootIndexImpl.java:72)
at org.jetbrains.jps.builders.impl.BuildRootIndexImpl.(BuildRootIndexImpl.java:62)
at org.jetbrains.jps.cmdline.BuildRunner.load(BuildRunner.java:84)
at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:267)
at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125)
at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:236)
at org.jetbrains.jps.service.impl.SharedThreadPoolImpl.lambda$executeOnPooledThread$0(SharedThreadPoolImpl.java:42)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Nishchal Bhole says:
September 8, 2017how to enable play app support for java in intellij idea community 2017.2.2??
there is no “Play2” option in run confugurations.
Andrey Cheptsov says:
September 12, 2017The Play 2 support is only available in Ultimate