Unable to view complete java source code in IntelliJ - java

Earlier I used Eclipse. Recently I have started using IntelliJ. I found that the IntelliJ equivalent of Eclipse keyboard shortcut F3 (view source) is F4.
But, when I use that I get the source in the following format.
It does not show complete source, i.e method implementation is not being shown. I have placed src.zip in the java sdk folder where Java is installed. I have added the src.zip in the project libraries too. In eclipse I can just attach source if it can't find one.
I have seen answers of relevant questions but couldn't follow. So,
How to attach the Java source in IntelliJ?
Detailed answer will be appreciated.
Thanks in advance.

Source is found in JDK folder, example - C:\Program Files\Java\jdk1.7.0_25\src.zip. JDK must be downloaded first, of course.

You should attach your source code to your project, get into Project Structure, click Global Libraries, add the source code jar, usually end with sources.jar, now you can see the source code.
you can see the Sources and JavaDocs under the Classes.

Found the answer.
Press ctrl + shift + alt + s
Select SDKs under platform settings.
On the right hand side there will be Sourcepath tab
Add the downloaded src.zip of java to the sourcepath
You can also add the API documentation under the Documentation Path in the same way by adding the downloaded API docs

I found I had to add the dependency jars under the model: i.e.
project structure ->
project settings ->
Modules (select the module where it has problem) ->
Dependencies (on the right handside pane) ->
click "+" ->
library -> then select all the libraries i needed (even though it is available at the root of my sbt project, i had to do this for the module i am interested).
also, i kept the library dependency at the build.sbt to be 'compile' scope instead of 'provided'. but sometime you want your dependency to be provided only (such as spark, or hadoop, in this situation)

Related

How do I enable showing fuction explanation on eclipse? [duplicate]

Using Eclipse I want to view the source code for a core Java class (E.g. java.util.concurrent.ConcurrentHashMap) but when I navigate to the source using 'Open Declaration' it says 'Source not found' and gives me the option to attach the source.
My question is; how do i attach the source? Where do i get the source .jar from for the java.util.concurrent library?
When you are coding in Eclipse, press CTRL and click on any core Java class name in your source. Eclipse will now show a screen saying you don't have the sources installed. However, in this screen there is a link saying "Attach source...". Click that link and import the src.zip file from your JDK installation directory (src.zip). This should do the trick
You need to have the JDK installed. Then you can look in JDK_INSTALL_DIR\src.zip
For me it is C:\Program Files\java\jdk1.6.0_11\ (depends on your current version)
You don't need to get a special open source version.
There are a few good answers here on where to get the source. But a word of caution: I'd be wary about how you use it (if you're using it simply for reference). The API documentation is the only contract you should code against, and is what the developers will keep consistent/intact between releases. I wouldn't use the source find out implementation details and then code my applications with regard to those implementation details, as they may change between releases.
You should be able to see "JRE System Library [jdk1.x.xxxx]" when you look at your project's Java Build Path.
You can access the project build path configuration screen by: right clicking on the project -> Build Path -> Configure Build Path... You should be able to see the JRE System Library entry at the bottom of the list.
The easiest way to view the source for the class is to use the "Open Type" shortcut. The default for this shortcut is: Ctrl + Shift + T". The class you're looking for should appear as you type it's name.
You can go to http://openjdk.java.net/ and download the latest builds of the openJDK project. I think this should give you what you need.
For ubuntu, install openjdk-6-source and use /usr/lib/jvm/java-6-openjdk/src.zip
If you can't find the actual source you can also use a decompiler to regenerate source from the class file.
Personally I use JAD combined with the JADClipse plugin to view source in Eclipse.
Right click on the project -> Build Path -> Configure Build Path.
Now edit your jre > select 2nd option alternate jre -> select any jdk (not jre).
Finish, Now open any class by ctrl + click, Its source code will display.
Outside Eclipse you can see the JDK sources on javasourcecode.org. On this page you can switch from the oficial API documentation to the source code and viceversa.
You can use 'Eclipse Class Decompiler integrates JD, Jad,' from Eclipse Marketplace.
From the find box in the Eclipse Marketplace write: 'jad' and you would find it.
src.zip file is present in installed jdk folder : ..\Program Files\Java\jdk1.8.0_131
Provide this path on the screen showing Attach source... worked for me.
we can see C:\Program Files\Java\jdk1.8.0_73\src.zip
where C:\Program Files is a home directory where I have installed the java.
in eclipse, it will show like Source not found.
form there link will come like browse source.
browse the link C:\Program Files\Java\jdk1.8.0_73\src.zip and attach it. now you can see your source code.
#jjnguy suggestion worked for me. But make sure you have also changed the default compiler as well. Right clickon th project-->Java Compiler->Click on the link under JDK Compliance(right section).

Where is the Openjdk documentation located in the local install that I can point IntelliJ to? This is not to be confused with referencing a URL [duplicate]

The shortcut for this action is Shift+F1 but it is always grayed out even though I have pointed JDK documentation path to the docs folder (the docs folder is unzipped from jdk-7u2-apidocs.zip ).
Thanks
You need to specify the docs/api subdirectory of the unpacked documentation or use https://docs.oracle.com/javase/8/docs/api/ URL for the external documentation feature to work.
File -> Project Structure... then here :
I'm using 10.5.4. It was unclear to me from the docs or from resources online that you need to add this at Project Structure > SDK's > (Choose your SDK) > Documentation Paths > Specify URL.
For IntelliJ Idea:
Call "Project Structure" (Ctrl+Shift+Alt+S), go to "Platform Setting - SDKs", choose "Documentation Path" tab on the right, then add url of JavaDoc (http://docs.oracle.com/javase/7/docs/api/) to your project
You can add the external Javadocs API link as shown below:
Go to File > Project Structure...
Then select SDKs (under Platform Settings)
Go to Documentation Paths tab
Select Specify URL button and add the link for JDK 11 API docs (https://docs.oracle.com/en/java/javase/11/docs/api/)
I understand the question as follows:
You would like to see javadocs of classes that are not within JDK. I am a bit uncertain because CrazyCoder's reply is talking about JDK specific javadocs.
I am using Macos 10.8.4 and Intellij 11.1.5
The project I am working on is a mvn based project with many modules which have complex dependencies.
Let me take a concrete example to explain what I did, I am sure it can be reproduced for others: apache sshd
I downloaded the javadoc from maven central stored it stored it somewhere. In intellij I went to the module settings (shortcut F4) and the to Libraries in the sidebar. Maven pulls all dependencies automagically and I can find sshd there. The right side then shows Classes, Sources and JavaDocs. The JavaDocs part in my case had a path linked in that pointed to my local m2 directory. However the directory did not contain the javadoc jar file. So I thought how do I get it:
mvn dependency:resolve -Dclassifier=javadoc
Taken from here
However this failed for because we do not have some javadocs in our nexus (I guess, not sure).
So I ended up linking the file that I downloaded manually in as a javadoc link and this then allown me to use Shift+F1 for the javadoc to open in my standard browser.
Maybe others can elaborate on how to get this done with mvn. I did not have the time to further investigate.
Posting this here in case you're like me and don't necessarily want javadocs, but rather the documentation inside your IDE.
In my situation, I had downloaded OpenJDK 11 and wasn't able to get documentation inside IntelliJ. Instead I was getting decompiled code.
What helped me was the answer at https://stackoverflow.com/a/38413439
i.e.
Go to File > Project Structure > SDKs > Sourcepath > '+' on the right side.
Navigate to your JDK (I'm on Ubuntu so it was located under /usr/lib/jvm/openjdk-11/).
Select the src.zip (for me, /usr/lib/jvm/openjdk-11/lib/src.zip).
Click OK > OK (to "Choose Roots" pop-up) > OK (to Project Structure)
Let Intellij index and it should be available in your IDE.
Java 10 Documentation path
Got to File -> Project Structure Choose External URL
Below Link works Fine... THe default one does'nt work
https://docs.oracle.com/javase/10/docs/api/
Other answers are satisfying but in case you still can't see the documentation, make sure that your java file is located under the src path.

Android : source not found [duplicate]

While debugging a java app in eclipse I receive a "Source not found" error in two cases:
Stepping in to a file in a different project which is already imported
Stepping in to a file in an installed maven repository
The files are there, but eclipse won't step into them, instead it shows a button to "attach source"
I tried attaching (which opened a dialog to define a variable?!) and eclipse did jump to the file, but the debugger could not inspect any variables there. Also manually attaching the source for each dependency isn't practical, as in my case there are thousands of dependency files.
Why is this happening, and how can it be resolved?
Just 3 steps to configuration Eclipse IDE:
Note: After updating the Source Lookup paths, you'll have to stop and restart your debug session. Otherwise, the file with the missing source will continue to show "missing source".
Edit Source Lookup
Select the Edit Source Lookup... command [ Edit Source Lookup ] to open the Source Path Dialog, which allows you to make changes to the source lookup path of the selected debug target.
IMPORTANT Restart Eclipse after this last step.
Eclipse debugging works with the class actually loaded by the program.
The symptoms you describe sounds like the class in question was not found in the project, but in a distribution jar without debug info found before the project you are working with.
This can happen for several reasons but have a look at the location where the classes showing this behaviour is found (look in the navigation pane to identify it). You will most likely need to change the build path of the project to avoid using this jar and have the JVM use the project instead.
EDIT: Note that as of 2018 it is common to use a build framework like Maven, where the build path is managed by the m2e plugin so this problem should be very less frequent than when the question was asked. If you use Maven and m2e, make sure to enable Preferences / Maven / "Download Artifact Sources" or right-click the project, Maven / "Download Sources".
The symptoms perfectly describes the case when the found class doesn't have associated (or assigned) source.
You can associate the sources for JDK classes in Preferences > Java > Installed JRE. If JRE (not JDK) is detected as default JRE to be used, then your JDK classes won't have attached sources. Note that, not all of the JDK classes have provided sources, some of them are distributed in binary form only.
Classes from project's build path, added manually requires that you manually attach the associated source. The source can reside in a zip or jar file, in the workspace or in the filesystem. Eclipse will scan the zip, so your sources doesn't have to be in the root of the archive file, for example.
Classes, from dependencies coming from another plugins (maven, PDE, etc.). In this case, it is up to the plugin how the source will be provided.
PDE will require that each plugin have corresponding XXX.source bundle, which contains the source of the plugin. More information can be found here and here.
m2eclipse can fetch sources and javadocs for Maven dependencies if they are available. This feature should be enabled m2eclipse preferences (the option was named something like "Download source and javadocs".
For other plugins, you'll need to consult their documentation
Classes, which are loaded from your project are automatically matched with the sources from the project.
But what if Eclipse still suggest that you attach source, even if I correctly set my classes and their sources:
This almost always means that Eclipse is finding the class from different place than you expect. Inspect your source lookup path to see where it might get the wrong class. Update the path accordingly to your findings.
Eclipse doesn't find anything at all, when breakpoint is hit:
This happens, when you are source lookup path doesn't contain the class, which is currently loaded in the runtime. Even if the class is in the workspace, it can be invisible to the launch configuration, because Eclipse follows the source lookup path strictly and attaches only the dependencies of the project, which is currently debugged.
An exception is the debugging bundles in PDE. In this case, because the runtime is composed from multiple projects, which doesn't have to declare dependencies on one another, Eclipse will automatically find the class in the workspace, even if it is not available in the source lookup path.
I cannot see the variables when I hit a breakpoint or it just opens the source, but doesn't select the breakpoint line:
This means that in the runtime, either the JVM or the classes themselves doesn't have the necessary debug information. Each time classes are compiled, debug information can be attached. To reduce the storage space of the classes, sometimes this information is omitted, which makes debugging such code a pain. Your only chance is to try and recompile with debug enabled.
Eclipse source viewer shows different lines than those that are actually executed:
It sometimes can show that empty space is executed as well. This means that your sources doesn't match your runtime version of the classes. Even if you think that this is not possible, it is, so make sure you setup the correct sources. Or your runtime match your latest changes, depending on what are you trying to do.
From http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source
"When running in debug mode, right click on the running thread (in threads tab) and select Edit Source Lookup. At this point, you should be able to add the necessary project/jar which contains your source code."
I added my current project in this way, and it solved my problem
I had similar problem with my eclipse maven project. I fought with this issue quite a long time then I tried to rebuild project with
mvn clean eclipse:eclipse
and it helped.
Note: Using this approach will confuse the m2e plugin since the two approaches are very different. m2e adds a virtual node to your project called "Maven Dependencies" and asks Maven to add all dependencies there.
mvn eclipse:eclipse, on the other hand, will create a lot of individual entries in the file .classpath. Eclipse will handle them as if you manually added JARs to your project.
Unless you know how the classpath in Eclipse works, this approach is not recommended.
I was facing the same issue,I followed the bellow steps.
Window => Preferences => Java => Installed JREs,
You see in the above screen Jre1.8.0_12 is selected.
select the JRE you are using and click Edit. Now You should see the bellow screen.
Click on the directory, browse for Jdk, It should look like bellow screen.
click ok, and its done
I had the problem that my Eclipse was not debugging the source code of my project. I was getting a blank page with "Source code node found".
Please click the Attach source code button. Then delete the "default" folder then click add and go to your project location and attach. This worked for me
Remove the existing Debug Configuration and create a new one. That should resolve the problem.
None of the mentioned answer worked for me.
To resolve this issue i have to follow bellow steps:
Right click on Java HotSpot(TM) 64 Bit server.
Select "Edit Source Lookup".
Click on "Add".
Select "File System Directory" instead of Java project.
Select Root directory of your project.
Check "Search Subfolders".
Click Ok ok ok.
Thanks.
Click -> Edit Source Lookup Path
after then
Click -> Add finally select Java project and select project path.
Source: https://www.youtube.com/watch?v=IGIKPY6q1Qw
In my case, even after Editing source lookup and Adding project, it didn't worked. I configured the Build path of the project.
After that, I selected JRE System Library and it worked.
Evidently, Eclipse does not automatically know where the source code for the dependent jars are. It is not clear why debugger could not inspect variables once the source was attached. One possibility is incorrect/incompatible source.
Assuming you have a maven project and the sources of the dependencies are downloaded and available in the local repository, you may want to install m2eclipse, the maven eclipse plugin and see if that helps in addressing your issue.
You might have source code of a dependency accessible to Eclipse. But Eclipse does not know for source code for code that is dynamically loaded. E.g. through Maven.
In case of Maven, I recommend that you use run-jetty-run plugin:
http://code.google.com/p/run-jetty-run/
As a workaround you can also connect to a running JVM with the debugger and you will see the code.
Alternatively you can use Dynamic Source Lookup plugin for Eclipse from here:
https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup
Unfortunately it didn't helped me as it has issues with Windows paths with spaces.
I have filled an enhancement request on Eclipse Bugzilla and if you agree this issue "Source not found" should vanish forever, please vote for it here:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=384065
Thanks!
Sasa
In my case in "Attach Source", I added the other maven project directory in the "Source Attachment Configuration" panel. Adding the latest version jar from the m2 repository din't work. All the classes from the other maven project failed to open.
Here test was my other maven project containing all the java sources.
I had the very same problem. In my case, I've disabled Window-Preferences-Java-Debug [Suspend execution on uncaught exceptions]. Then, the console showed me the correct error: my MySql user hadn't privileges to access the database. According to this topic.
Info: This is a possible solution, when you use maven (pom.xml) with couple of projects.
If you are working with maven, make sure what version you are taking inside the according pom.xml (e. g. 1.0.1-SNAPSHOT ).
It might be possible that your code is up-to-date, but your pom.xml dependencies are still taking the old JAR's/Snapshots (with the old code).
Finding the problem:
Try to debug the according file.
Therefore, set a breakpoint in the relevant code area.
When "source not found" appears, make sure to bind in the right project (where the .java file can be found).
The compile .class file opens up in the IDE editor.
Click "Link with Editor" to find the according JAR/Snapshot.
Now make sure that this JAR is the most recent one. Possibly there is a newer one. In that case, write the most recent version number in the pom.xml.
Then do a maven update and build (e. g. "mvn clean install -U") in the right project directory.
If you are on eclipse or STS please install and Use GC(GrepCode Plugin) ,some time you don't need to attach the source .zip file into your project path so GrepCode works fine for you.
I've had a related issue in connection with Glassfish server debugging in Eclipse.
This was brought about by loading the source code from a different repository (changing from SVN to GitHub). In the process, the wrong compiled classes were used by the Glassfish server and hence, the source and run time would be out of sync with break points appearing on empty lines.
To solve this, rename or delete the top folder of the classes directory and Glassfish will recreate the whole class directory tree including updating the class files with the correctly compiled version.
The classes directory is located in: /workspace/glassfish3122eclipsedefaultdomain/eclipseApps/< your Web Application>/WEB-INF/classes
In my case with tomcat projects I have checked project here:
Window - Preferences - Tomcat - Source Path - Add java projects to source path
In my case the Maven version of the other referenced project didn't match the version of the test project. Once they were the same, the problem disappeared.
When running in debug mode, click Edit Source Lookup after suspended from thread. At this point, we should be able to add the necessary project/jar which contains your source code.
After I added my current project in this way, and it solved my problem. Thanks
If you want to attach source code to any JAR by auto-downloading, try using this Eclipse plugin Java Source Attacher
I had this problem while working on java code to do process on a excel file containing a data set, then convert it to .csv file, i tried answers to this post, but they did not work.
the problem was the jar files themselves. after downloading needed jar files one by one(older releases) and add them to my project, "source not found" error vanished.
maybe you can check your jar files.
hope this would help.
this worked for me
right click on project -> Properties -> Deployment Assembly -> add your jar
Go to Debug configuration in eclipse and use below goal to run your application.
-Dmaven.surefire.debug
e.g
-Dmaven.surefire.debug exec:java
Well, here's what worked for me. I tried every possible solution on StackOverflow that there was. I tried changing my source location in the debug menu, I installed the m2e Eclipse plugin, I changed from embedded Maven, and I installed the run-jetty-run and nothing worked. Now, I will caveat that I was not trying to view an external person's source code, I just wanted to see my OWN code, but every time I "stepped in" to my methods that I wrote that were in MY project, I got the "Source now found" error.
After finally asking an expert, my issue was that the first thing Eclipse was doing was calling a ClassLoader, which you can see from the debug stack. All I had to do was F6 (step over) and then it took me back to my original call and then F5 (step in). And there was my code. Sigh...such a simple fix but an hour wasted.
For beginners,
There is a possibility that the jar file is a part of the project which you have not yet included in the Eclipse workspace.
For that, you need to know the project name of the jar file.
Say for example, its abc-18.0.0-SNAPSHOT.jar, it means that the project you are supposed to include in your workspace is abc.
I had the same issue with eclipse 2019-03 (4.11.0) and I was only able to solve this by doing the debugging via remote debugging instead of directly launching it in debug mode.
Attach source -> Add -> External Archive -> select the jar -> open -> done
the catch is look for the sources jar and attach this jar.
for example the jar ends with "-sources" Stax2-api-3.4.1-sources
sometimes these thing happens because of the version also like if you are using latest
version in that case it may arise try to use older version it will work.

How do I load up Google Collections Library in Eclipse?

I'm currently trying to learn to use Guava so I downloaded the source by doing this:
svn checkout http://guava-libraries.googlecode.com/svn/trunk/ guava-libraries-read-only
Sorry if this sounds really stupid but for the life of me, I can't figure out how to load up the source in Eclipse to examine it. I've tried different ways (creating, importing, etc) but always end up with package problems.
I'm using Eclipse 3.5 on Ubuntu by the way.
Can I get some help on this? Thanks!
EDIT: I'm trying to examine the source so I would like to add the source as a project.
Here is what I would do...
Go to the downloads page and grab the latest bundled release
Unzip it to some local directory
Copy the guava-r<version>.jar to your project's lib directory.
Right click on the JAR from Eclipse and say "Add to Build Path".
If you need the source you can attach the guava-r<version>-src.jar in Eclipse via the Configure Build Path project menu or by using the attach source button during debug.
It's easiest to download a Jar from the Guava site, copy it into your Eclipse project and add it to the build path using the jar context menu > Build Path > Add to Build Path. Also, point Eclipse to the included source zip using project context menu > Configure Build Path... to get Javadoc on the Guava classes.
I have done it two ways: the Subclipse and Maven eclipse plugins. Both offer "create project from repository"-like options. Both plugins have reasonable online help, so I'll not repeat exact steps here.
Creating a project from the repositories will give you a full view of the source (and documentation, build files, etc).
I might be a little late in answering ... but you could also simply install the guava bundle from the update site "guava-bundle"; it will install the sources along and you'll then just have to import the plugins in your workspace (File > Import > plugins and fragment... don't forget to tick the "projects with source folder" checkbox on the first page of this wizard) and browse the source from it.
Note that this update site has now been discontinued in profit of Guava-osgi which also provide an update site for easy installation ... but I haven't installed it yet and thus don't know whether the sources are included in the artifacts installed through this update site.

How do I view JRE's source code in Eclipse?

Using Eclipse I want to view the source code for a core Java class (E.g. java.util.concurrent.ConcurrentHashMap) but when I navigate to the source using 'Open Declaration' it says 'Source not found' and gives me the option to attach the source.
My question is; how do i attach the source? Where do i get the source .jar from for the java.util.concurrent library?
When you are coding in Eclipse, press CTRL and click on any core Java class name in your source. Eclipse will now show a screen saying you don't have the sources installed. However, in this screen there is a link saying "Attach source...". Click that link and import the src.zip file from your JDK installation directory (src.zip). This should do the trick
You need to have the JDK installed. Then you can look in JDK_INSTALL_DIR\src.zip
For me it is C:\Program Files\java\jdk1.6.0_11\ (depends on your current version)
You don't need to get a special open source version.
There are a few good answers here on where to get the source. But a word of caution: I'd be wary about how you use it (if you're using it simply for reference). The API documentation is the only contract you should code against, and is what the developers will keep consistent/intact between releases. I wouldn't use the source find out implementation details and then code my applications with regard to those implementation details, as they may change between releases.
You should be able to see "JRE System Library [jdk1.x.xxxx]" when you look at your project's Java Build Path.
You can access the project build path configuration screen by: right clicking on the project -> Build Path -> Configure Build Path... You should be able to see the JRE System Library entry at the bottom of the list.
The easiest way to view the source for the class is to use the "Open Type" shortcut. The default for this shortcut is: Ctrl + Shift + T". The class you're looking for should appear as you type it's name.
You can go to http://openjdk.java.net/ and download the latest builds of the openJDK project. I think this should give you what you need.
For ubuntu, install openjdk-6-source and use /usr/lib/jvm/java-6-openjdk/src.zip
If you can't find the actual source you can also use a decompiler to regenerate source from the class file.
Personally I use JAD combined with the JADClipse plugin to view source in Eclipse.
Right click on the project -> Build Path -> Configure Build Path.
Now edit your jre > select 2nd option alternate jre -> select any jdk (not jre).
Finish, Now open any class by ctrl + click, Its source code will display.
Outside Eclipse you can see the JDK sources on javasourcecode.org. On this page you can switch from the oficial API documentation to the source code and viceversa.
You can use 'Eclipse Class Decompiler integrates JD, Jad,' from Eclipse Marketplace.
From the find box in the Eclipse Marketplace write: 'jad' and you would find it.
src.zip file is present in installed jdk folder : ..\Program Files\Java\jdk1.8.0_131
Provide this path on the screen showing Attach source... worked for me.
we can see C:\Program Files\Java\jdk1.8.0_73\src.zip
where C:\Program Files is a home directory where I have installed the java.
in eclipse, it will show like Source not found.
form there link will come like browse source.
browse the link C:\Program Files\Java\jdk1.8.0_73\src.zip and attach it. now you can see your source code.
#jjnguy suggestion worked for me. But make sure you have also changed the default compiler as well. Right clickon th project-->Java Compiler->Click on the link under JDK Compliance(right section).

Categories