Real-time compilation in IntelliJ IDEA - java

I have recently switched from IntelliJ IDEA Community Edition version 12, to version 13 (updated to 13.0.1) and apparently the real-time ("on-the-fly") compilation of code does not work, at least not as found in other major IDEs (e.g., Eclipse).
A similar issue has been brought up in an earlier StackOverflow question and the answer was to check the corresponding option in File -> Settings -> Compiler, which I have of course done, but nothing changed.
The way it currently is, I can type whatever text in the Java code and there is no error highlighting, not even when the file is saved, let alone in real time.
Is there another setting or configuration that needs to be applied?

IntelliJ does something a lot better than compiling your files on the fly. It dynamically parses what you're typing, offering many more warnings than the java compiler produces. In comparison, compiling on the fly is a bad idea. Having said that, it sounds like you're having other problems, because you should have errors and other problems highlighted. At the top right of each editor window is a small coloured square. On good code it's green. It's yellow when there are warnings, and red when there are errors. If it's grey then Idea is analyzing your files. If you hover your mouse over the square it'll give you an idea about what Idea is doing, and how it's progressing. Try that before you try anything else. Idea never gets stuck, but it can run out of memory, if the analysis isn't progressing, then perhaps you've run out of memory, or have other issues, check this in the event log, which is at the bottom right of the window.

I've just been pulling my hair out over this working on my Mac in a coffeeshop running on battery power. Try File | Power Save Mode and make sure it's un-checked.

Related

How to disable the Error Hovers/Code Mining in Eclipse

I think this is something that is released lately in Eclipse 2021. These error hovers/code minings are really annoying. Sometimes, they overlap the code also, and the code moves a lot.
Does anybody know how to disable this in Eclipse?
This is referred to as "code mining". I came to the same conclusion as you. They were intriguing at first, but they became more of an annoyance over time.
If you search for "mining" in Eclipse Preferences, you'll see the two places where code mining can be controlled, but I believe just unchecking "Enable code minings ..." in "Java->Editor->CodeMinings" will do it.
While searching the web for the same issue, I landed on this discussion and the following steps worked for me. Please note that I do not want to completely disable it. Just wanted to disable the annoying code jumping when I am typing the code.
You can actually do that, although the UI does not support it.
Close your Eclipse
Open file in a text editor:
/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs
Find the line (it's only added once you changed your code mining settings)
showAnnotationAsCodeMiningLevel=
After the equals sign, you'll find a number.
The number encodes in binary:
1110b
| no code minings
| code minings for infos
| code minings for warnings
| code minings for errors
However, it's stored in decimal, so you have to convert it.
If you want no errors, but warnings and infos as code minings:
0110b = 6d
Change the line to
showAnnotationAsCodeMiningLevel=6
Save the file
Start Eclipse

JavaFX sporadic rendering issue - disappearing buttons / controls

I have a Java/JavaFX application deployed as a native install for Windows and Mac. The bundled runtime is currently 8.121. You can find the installers and the Java code here: George download
I have been using this application in the classroom weekly (with 20 children) for the last 15 months, and right from the start I have seen the following problem:
From time to time, buttons disappear. That is to say, they are simply rendered as a white rectangle, making them effectively almost invisible. Both the background and label/text disappear.
This mainly happens on mouse-over, but then does not correct itself.
The buttons are still there, and clickable.
It only happens sporadically, but it seems to recur on certain machines more than others. Windows 10 now, but used to the same happened on tiny Windows 7 machines previously.
I am not able to reproduce it myself and have never seen it on a Mac, I think.
It now also happens sometimes with other widgets/controls, and even before any user interaction.
Is there some known issue around this?
Has anyone else described something similar?
Might it have something to do with certain minor operating system adjustments?
Any thoughts or ideas would be much appreciated.
Update (2018-11-06)
Just started testing my application in Java 8 in VirtualBox with Windows 10, and I now get the rendering error myself. Hurra!
Looking into the -Dprism.xxx options, I found this article:
http://werner.yellowcouch.org/log/javafx-8-command-line-options/
Testing with -Dprism.threadcheck=true, I get a lot of
"ERROR: PrismPen / FX threads co-running: DIRTY: false" with stack traces.
Setting -Dprism.dirtopts=falsedoes not solve it for me, though.
But running with -Dprism.order=sw does. But this is not a good solution for an application that may do some demanding rendering (Turtle Geometry).
Will keep digging.
I've been having the same issue, I tried updating to Java 10 but the issue remained. I then edited the properties on java.exe and on the 'Compatibility' tab I set 'Override high DPI scaling behavior' to 'System (enhanced)' and the problem seems to have gone away (or at least it hasn't happened again yet).
I observed the same thing: Visually disappearing (but still functional) buttons and other controls (except labels) especially in areas outside the original size of the window after I have resized it manually)
In my case -Dprism.dirtopts=false reduced the problem but also didn't solve it (and was not really a satisfying solution anyway).
Additionally I observed that some TextField controls also showed rendering glitches (looked like the same text was rendered twice with a little offset). That finally put me on the right track:
It turned out to be just a missing Platform.runLater(...) around some calls to TextField.setText(...) (from another thread) for exactly these TextField controls, which was causing this (even for e.g. a Button which is at a totally different place - also in the widget hierarchy).
I know, this is probably not the answer in all cases, but hopefully it helps at least some others facing the same problem (took me a full day to find out).

How to make my own warnings appear in the Eclipse Problems view?

I am developing a CDT plug-in for Eclipse IDE. I want my own warning to appear in the Problems view.
Furthermore, my warning message is very important and must be seen by user, but Problems view may be even not shown, so I show a message box.
How can I add my warning to the Problems view and what is the preferred way to deal with warnings that must be seen in Eclipse IDE?
preferred way to deal with warnings that must be seen in Eclipse IDE?
Make them errors instead of warnings.
Then, when the next state in the workflow needs the output of the problematic code, that is when it is appropriate to do a pop-up. When you are coding and making changes, it is perfectly normal to have "temporary" errors/warning in your code. Pop-ups at that time would be very inconvenient. But when I proceed to launch my code or similar then I want to be warned off.
Consider the case of doing a Java launch. If there are errors in the code there is a pop-up like this:

How to show all errors in one place? A navigation window for "x error found"?

On the right, we can see something going on, and after it is done, it shows "x error found".
What is this exactly? Java compiler? Lint tool? Build-in analysis?
The problem is, when file gets large, it is hard to find out where the error is.
I know we can use F2 to navigate, but it also navigates to warnings. It would be nice to have a window showing all the errors in one place. Where is the navigation window for "x error found"?
Thanks for Vucko's answer. I didn't know it is clickable. Really appreciate it. But, I have to click that, hover my mouse over the codes, then wait for the error details to pop up, which costs lots of time. Also, warning is clickable, which is annoying. I still prefer a window.
Just Figured it out by myself.
After we Build > Make Project, Messages window pops up. All the errors show up here. We can click on each error to navigate to the corresponding file and location, or copy it to search on Google.
It is most likely Java compiler. Somehow it compiles on the fly. But, sometimes it is not reliable just like Instant Run is not reliable. If it becomes inconsistent with Messages window, try to restart Android Studio.
Never mind how big the file is, you can simply find the error by clicking the horizontal red line below. Every error will have it's own line and by clicking on it, you will be taken to that line immediately.
See the image for better understanding of what I mean:
Note: This is quite a useful tool for some other stuff as well, for example warnings will be shown and colored in orange (every color is customizable of course), and if you're using version control, e.g. Git, your changes will be colored in blue/green for edits/additions respectively.
I know we can use F2 to navigate, but it also navigates to warnings.
You can right-click on the scrollbar and select this option.
Go to high priority problems only
Have you tried filtering Logcat to Error? Like this:
Try Analyze --> Inspect code this will give you all your error with line number. it will even show typo

changing switches to "if-else" statements

I've just recently become interested in programming, and I want to create Android apps for phones or tablets. I've come a long way in a couple weeks from knowing almost nothing about java/xml. I'm very serious about this. I'm going to find the answer to this question one way or the other. In fact, I hope to have it figured out before anyone answers this. I've fixed many issues without resorting to asking anyone, but I've just been stuck on this issue too long. I figured I'd give this a shot.
I'm using an older tutorial to build a practice twitter app (the tutorials for these seem to be everywhere, which is why I chose it). I'm using Eclipse for an editor.
The following is an example of code from the tutorial. which relates to my question:
#Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.timeline);
Apparently since the intro of ADT 14, you can no longer use the (R.layout.timeline) phrase, which the error message refers to as a "switch statement."
Now, in a post I found on another site, someone who had a similar issue shows a screenshot of the "quick fix" in Eclipse using ctrl+1. in the screenshot, the fix that pops up says "convert switch to 'if-else' statement." This fix does not pop up in my version of Eclipse. My quick fix options are "migrate Android code", "create field 'timeline' in type 'layout'", "create constant 'timeline' in type 'layout'" or "rename in file."
If I choose "migrate Android code", a window pops up informing me of the ADT 14 update, and how switch statements are no longer allowed in library projects. It says to convert the switch statement to an "if-else" statement by pressing ctrl+1 for the quick fix, then choosing "switch to 'if-else' statement" like it does in the screenshot I found. But again, when I do this, that option does not pop up.
I would much rather know what needs to be changed in the code than know how to make the right quick fix pop up. If it isn't too much trouble, an explanation of why exactly these changes are affective would be very helpful. I have many (MANY) errors in my java files right now, but most of them are due to this exact problem in different forms. If I could see just one before/after example I could probably figure it out from there without an explanation. But after hours of searching, I cannot find that so far by googling.
Thanks so much in advance....
And for the record, I don't see any switch classes in any of my java files, if that makes a difference for the answer...
Make sure you click on the switch keyword itself then press Ctrl + 1.
This confused me at first as well...
If it still doesn't show up, what version of Eclipse are you using?
If you are using a Mac select the keyword switch and click Shift + Command + 1.
That will show a prompt to change switch to if else conditions.
I've been having the same issues. For me, I was switching on view.getId(). Before the switch, declare int id = view.getId();. Then switch in id. Then you can ctrl+1 click and the "Convert Switch to If/Else" should pop up.
They made this change to decrease the build speed. My projects now build in roughly 1/10th of the time. I'm glad I upgraded the ADT.
The issue happens because since ADT 14 resource identifiers are no longer final.
The quick solution you can change switch statements with if-else statements.
With Android Studio 4.1.3
Step:1. Just right click on the switch keyword of statement.
Step:2 Click on the first option Show Context Actions.
Step:3 Click replace switch with if.
Done
To me, it looks like you don't have a timeline resource.
Breaking down R.layout.timeline
R refers to Resources
layout refers to the collection of layouts in your application
and timeline refers the specific resource that you are trying to apply setContentView() too.
If my hunch is correct, you don't have the timeline resource.
Create a new XML file in your layout folder in eclipse and name it 'timeline'
That should resolve the issue.
I hope you got things working.
I agree that this sounds like some weird Eclipse error that is not what it seems, and not what Quick Fix says it is. Eclipse has been known to lie from time to time. Cleaning your project (as #Stephen Dubya said), cutting out the offending code, saving the file, pasting it back in, and saving again...these are some of the non-obvious tricks that sometimes get Eclipse to behave.
In general, I think it would be good for you to get more familiar with some of the Java basics like switch; I think it will make your learning of Android a lot easier. Although the tools and documentation keep improving, Android is still young and not always easy to learn using tutorials, especially when you aren't used to writing code at all or using complicated IDEs like Eclipse.
But I digress. It is only in Android library projects, not regular projects, that Android doesn't treat resources as constants (final variables), since ADT 14. That means means that in library projects, you can't use R.layout.timeline or similar resource variables in your switch statements. You can only switch on whole numbers or enum values.
Using if-else all the time may be your best bet, anyway. switch can, especially for beginners, lead to logic errors in your code, and anything you can write using switch can be rewritten using if-else blocks. Personally, I've stopped using switch in Android and other Java code altogether.
You need to place the curse right before the s in the word switch, and the press cmd 1 . If you switch statements have fall-through clauses, the option to convert won't be available.
Somehow I overworked this error. I have deleted my project from workspace. Reverted it's .project files to old ones commited at SVN. Then at Eclipse uninstalling ADT and install it again. Then import my project. - > Libraries are added the old way and as result all fields at R.java are now final. Hope this helps.

Categories

Resources