Ant Automation of Netbeans - java

I am trying to automate the build of a project, right now if I build using Ant it fails.
If I build with netbeans it is successful. (though sometimes I have to restart netbeans if I've made any changes like a svnrevert, or other things I've tried)
If I build with ant after the netbeans build it is successful.
Any pointers on how to troubleshoot this?
I've searched high and low for how to deal with this but have no idea. the build.xml and other build related files are autogenerated from netbeans as far as I can tell.
This is the error I am getting when I try building straight with Ant
C:\Users\...\nbproject\xml_binding_build.xml:6: typedef class com.sun.tools.xjc.XJCTask can
t be found
using the classloader AntClassLoader[]
EDIT:
The result with debug enabled doesn't really give any additional info besides a stack trace

"Netbeans projects uses nbproject/private directory to contain some system dependent attributes.Netbeans puts the JAXB path information in this directory, which cause my the compilation problem.
jaxws.endorsed.dir=D:\Program Files\NetBeans 6.7.1\java2\modules\ext\jaxws21\api:D:\Program Files\NetBeans 6.7.1\ide11\modules\ext\jaxb\api
This could be a bug of JAXB Wizard in Netbeans.
Solution:
Create another project in the current Netbeans environment and run JAXB Wizard once. Look at the nbproject/private/private.properties file, copy the corresponding line into your target JAXB application, clean and build the application."
Source: http://braveo.blogspot.ca/2009/11/netbeans-jaxb-problem-typedef-class.html

In my case, it looked like the private.properties (and private.xml) files were never checked in, so unless they had been built at least once by netbeans my build would continue to fail. I checked those files in and the build is successful now.

Related

Eclipse -- SharedClasses has build path errors

Please bear with me, since I am not a java Developer, and all of this is extrememly new for me.
I am running Eclipse Indigo, and have a Project that I need ot build and compile .class files form the existing .java files. I have designated an output location in my directory. Within the Properties panel for the Project, for my Java Build Path, I correctly linked all the JARs and none of them are listed as missing or unbound.
After attempting to Clean and Build, I am left with no results. The Error Log shows that:
Failed to retrieve default libraries for
../JavaLibrary/jre/jdk1.6.0_20
And the Problem Log shows that:
The Project was not built since it depends on SharedClasses, which has
build path errors
As I stated before, I was under the assumption that my Java Build Path was correct, but I cannot locate these errors. As for the Java Development Kit 1.6, It is linked properly in the Java Build Path, so I am at a complete loss.
Can anyone direct me to how I can correct this issue that I am having?
Check errors in project libs,
right click to project --> Preferences --> Java Build Path -- Libraries

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 can I create a netbeans 7.3 project wrapping the jedit source code?

I thought this is an easy question because there's already a wiki topic about this here especially this section. however the wiki is out of date. A prior question exists here on Stackoverflow that only has a reference to these now out of date wiki topics. The netbeans wiki must be for some older version of NetBeans UI, and I'm using NetBeans 7.3.
If I try to use the existing sources option in 7.3 it assumes that you cannot have a build.xml already, and so it tells you you cannot proceed:
For illustration purposes it may help to show some structure of jedit source code folders.
I have both the latest jEdit source code and the 5.0 stable source code. The project layout is roughly like this:
+ jedit
|
+- org
|
+- net
|
+- test
|
+- de
|
....
I have located the folder where the root build.xml is located, but I cannot follow the wiki instructions because there does not appear to be such a project-with-existing-ant-build-script option anymore.
And Now We Try the Free-Form option... and it doesn't work either...
The free-form project works in so far is that it lets you create a netbeans project, but the scan of the directory results in a complete mess inside netbeans. A series of folders with path "." are added, 5 copies of a duplicate "." folder, and 5 duplicate "Source Packages" entries in the project tree view. This may be related to the second problem with free-form which is that it will not build and run jEdit, but dies with a strange error message that does not happen when I try to build outside netbeans:
The mess in the project pane, leaves me unable to navigate or see the source structure:
And it doesn't build:
Processing /Users/admin/NetBeansProjects/jedit/trunk/build/test/merged-reports/TESTS-TestSuites.xml to /var/folders/59/mc8gzxfn1b98j389rkz4zjsc0000gs/T/null666107982
Loading stylesheet jar:file:/Applications/NetBeans/NetBeans%207.3.app/Contents/Resources/NetBeans/java/ant/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
: Error! The first argument to the non-static Java function 'replace' is not a valid object reference.
: Error! Cannot convert data-type 'void' to 'reference'.
: Fatal Error! Could not compile stylesheet
Failed to process /Users/admin/NetBeansProjects/jedit/trunk/build/test/merged-reports/TESTS-TestSuites.xml
/Users/admin/NetBeansProjects/jedit/trunk/build.xml:442: Errors while applying transformations: Fatal error during transformation
BUILD FAILED (total time: 35 seconds)
So I gave up on the free-form project because it doesn't build.
And now on to opening a project with existing sources after removing the build folder and build.xml which doesn't work either...
If I want to import project sourcecode (just the java, no build.xml because I deleted it), I get stuck here:
What did I try to do? I tried to add the source folders, as directories under org, de and net (see the source tree I put above in my question). However netbeans automatically traverses upwards to the ROOT folder of my source code.
I am unable to select any folder OTHER than the root because selecting a folder underneath it leads to Netbeans unhelpfully always moving back up the folder hierarchy until it arrives where it wants to be. It won't be told any different.
This in turn leads to netbeans complaining about something it decided to do to me, which is that it can't include jedit/test because it's using jedit as the root source folder. Nothing I select (however many folders below jedit/) results in netbeans doing anything differently. It insists on traversing back through subdirectories in an effort to be helpful. I am beginning to think that the real world users of java may organize their source code in a way that netbeans cannot handle.
Other Information
Building from the shell with ant against the default build.xml shipping with the sources of jedit works fine, as long as you have a modern version of ant. Reinstalling ant fixed my command line build abilities.
I found that I had to install the latest ant version from the apache website before my Mac OS X box would build jEdit 5.0 at the command line. The ant version inside my netbeans app bundle may be different.
I am using OS X 10.8 and hava Java 1.5, 1.6, and 1.7 installed, currently building against java 1.6.
It seems to me that Netbeans opens Maven projects with aplomb and grace and this in turn is due to Maven projects generally following standard java directory layouts. Ant-based builds also seem to import nicely to the extent that naming and layout standards are intelligible to Netbeans, but jEdit appears to be something that Netbeans can't cleanly handle in its current form.
The URL below has instructions to setup and compile jEdit 5.0.0 source in NetBeans 7.3.
http://www.areaofthoughts.com/2013/01/compiling-running-jedit-5-in-netbeans-73.html
Summary:
jsr305-2.0.1.jar dependency must be downloaded and added manually to netbeans Libraries tab or else javax.annotation.Nonnull and javax.annotation.Nullable will not resolve.
Unpacking the jedit source code to a subdirectory 1 level underneath the folder that will be the netbeans project is essential.
The screen shot states that /Users/admin/NetBeansProject/jedit/trunk already contains a build.xml file. You should try creating a "Freeform Project" in NetBeans instead of a "New Java Project with Existing Sources".
If you don't want to reuse the existing build.xml file, you can copy your source files to a new directory. In particular, you should place them in the src subdirectory of an otherwise empty directory for the NetBeans project. Then you can create a "New Java Project with Existing Sources." You shouldn't need to create your own Ant build file unless you need to add custom tasks or customize the default ones which are generated by NetBeans.
I can't comment on using Netbeans for Java, as I code PHP with it only. But when loading a project with existing PHP sources, I can save my project configuration file in the project or at another location (and I do sometimes save the project config to my windows profile, as the sources are on a samba share on my linux web server)

Build Machine: error: package net.rim.device.api.ui does not exist

I am trying to get our build machine to consistently build our Blackberry project (build using the Eclipse plugin not the JDE) on check-in. We are using Jenkins to call the project and sometimes it works but only after I've fired up the project in eclipse on the far machine but then restarting causes the error to come back.
The first error I get is (the following errors are all in the same vein):
[javac] c:\<path_to_project>\src\path\to\package\class.java:6: error: package net.rim.device.api.ui does not exist
And every other reference to a net.rim.* object. Clearly it's because it's not linking to the target net_rim_api.jar file but I can't figure out what on earth is going wrong. I've tried poking at the build.xml file but I just get more errors and other versions of this error in other threads turn out to be not the same thing.
I have tried installing and using BB-Ant (roughly following this tutorial) but it has not provided me with the solution - I'm prepared to admit that I may have made a mistake in the implementation but I followed it as closely as I could with the current project that I have.
I would appreciate any help that you can give me.
EDIT
So I've now altered the project to use <rapc> instead of <javac> which appears to do the linking to the .jar for you but it's still frustrating that you can't simply use the auto generated build.xml. Is this a known (and due to lack of information available on the internet, accepted) issue with Eclipse?
I went down the BB Ant build script road a year or so ago, got a lot of help on this site, and tried to document my progress on this site. Hopefully the links I place will help you and others.
I have marked this as "community wiki" since it doesn't directly answer the question but I do think it is useful.
Basic algorithm
My answer on this page shows the algorithm for a working build script (BlackBerry: create COD from JAR source file in Ant script). Perhaps this is more complicated than you are looking for, but it does show the relationship I found between javac and rapc.
To summarise, I wanted to include my SDK into the final build, and the steps were:
javac the SDK to create CLASS files
preverify the CLASS files
jar the SDK
Copy the SDK JAR file into the project
javac the project - use the SDK JAR as the classpath
preverify the project CLASS files (again, use the SDK JAR in the
classpath)
jar the project - add the SDK JAR as a zipfileset
jarjar this project JAR to refactor package names as required
Finally, run rapc on this JAR - it will find no duplicate COD files
& should run fine.
Please read the other answers on that page, since they offer great advice that I used in my end result.
Extra Info & Including a JAR into final output
I'd recommend this page just for the extra links that I included in it - the exact question is unrelated (BlackBerry - Ant script to include JAR in project without external dependancies).
Again, the value is in the answers that the other guys provided.
Misc
Here are a couple of links to other BB build script issues that I had - you or someone may find them useful:
BlackBerry - Ant build script for more complex apps
BlackBerry - final step of build process
Finally this one speaks to a mistake in the documentation when compiling your own code into a library for import into a different project:
BlackBerry - use own JAR file in own project

How to debug an eclipse build?

Hi guys : Whats the best way to debug the "classnotfound" Error in eclipse ?
I have a standard setup .... Ant, eclipse, etc... and every once in a while, I do something to muck my build up . I've never quite come up with a system for figuring out exactly where it is that eclipse "looks" for class files --- and how to make sure that my builds work properly.
Usually, on this project, I toggle the "builders" on and off (there is a Java builder, and an Ant builder checkbox in Properties->Builders), and build from the commandline using ant a few times --- eventually, eclipse gets synced back up and sees my class files....
So in general - my real question is - what is the right way to inspect and debug a java build in eclipse ? When you click "Run As-> Junit test" ... how and where does eclipse look for / execute the classes ?
You should check your project classpath.
Usually java uses it's native classpath (Java Home and current directory). However eclipse overrides that with the project's classpath. You have to manually add any external libraries to the projects classpath.
This is a good intro to what should be done: http://www.ehow.com/how_4784820_set-classpath-eclipse.html
I haven't used it but there's an ant debugger within eclipse http://www.ibm.com/developerworks/opensource/tutorials/os-ecl-easyant/
To debug the "classnotfound" Error in eclipse.
You can try two solutions 1) go to projects->clean -> cleanallprojects
( if error is due to the file that you developed).
2) Check the classpath of your project to make sure jar file containing class for which your are getting the "classnotfound" Error is there in your classpath.

Categories