NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout Wrapping Problem Launch4j - java

I'm getting an error when I try to wrap the Jar to exe through Launch4j.
I have added the library already in the NetBeans IDE and also for the Project but still the error persists.
The Jar is running without any problems but when I try to wrap it, I'm getting always that issue warning:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout
....
....
Caused by: java.lang.ClassNotFoundException: org.netbeans.lib.awtextra.AbsoluteLayout
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 17 more
How can I resolve this?
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="HelaTergo" default="default" basedir=".">
<description>Builds, tests, and runs the project HelaTergo.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar: JAR building
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="HelaTergo-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>
CSS:
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Class-Path: lib/AbsoluteLayout.jar
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<launch4jConfig>
<dontWrapJar>false</dontWrapJar>
<headerType>gui</headerType>
<jar>C:\Users\ckoca\Documents\NetBeansProjects\HelaTergo\dist\HelaTergo.jar</jar>
<outfile>C:\Users\ckoca\OneDrive - COMPUTACENTER\Desktop\SerkoBib.exe</outfile>
<errTitle>Bitte Java vorerst installieren</errTitle>
<cmdLine></cmdLine>
<chdir>.</chdir>
<priority>normal</priority>
<downloadUrl>http://java.com/download</downloadUrl>
<supportUrl></supportUrl>
<stayAlive>false</stayAlive>
<restartOnCrash>false</restartOnCrash>
<manifest></manifest>
<icon>C:\Users\ckoca\Documents\Icons\Icons8-Windows-8-Business-Department.ico</icon>
<classPath>
<mainClass>helaTergo.HomeHelaTergo</mainClass>
<cp>lib/AbsoluteLayout.jar</cp>
</classPath>
<jre>
<path></path>
<bundledJre64Bit>false</bundledJre64Bit>
<bundledJreAsFallback>false</bundledJreAsFallback>
<minVersion>1.6.0</minVersion>
<maxVersion></maxVersion>
<jdkPreference>preferJre</jdkPreference>
<runtimeBits>64/32</runtimeBits>
</jre>
<versionInfo>
<fileVersion>1.0.0.0</fileVersion>
<txtFileVersion>1.0.0.0</txtFileVersion>
<fileDescription>Serko Library Software</fileDescription>
<copyright>Computacenter</copyright>
<productVersion>1.0.0.0</productVersion>
<txtProductVersion>1.0.0.0</txtProductVersion>
<productName>SerkoBib</productName>
<companyName>Computacenter</companyName>
<internalName>SerkoBib</internalName>
<originalFilename>SerkoBib.exe</originalFilename>
<trademarks></trademarks>
<language>ENGLISH_US</language>
</versionInfo>
</launch4jConfig>

Related

Set project ant classpath programatically

I'm working on a Java project that exec Ant target task on runtime.
On my pom file I have this dependency:
pom.xml
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>${ant.version}</version>
</dependency>
I have to run <scp> task that is included in a target container task (called scp-test-target).
Below you can see the ant file:
deploy.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" basedir="./">
<target name="scp-test-target" description="scp desc">
<echo message="Test SCP"/>
<scp file="..." todir="..."/>
</target>
</project>
I have created a junit file to exec 'scp-test-target':
Test.java
#Test
public void testAnt1(){
Project antProject = new Project();
ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
antProject.addReference("ant.projectHelper", projectHelper);
antProject.setUserProperty("ant.file", "deploy.xml");
antProject.fireBuildStarted();
antProject.init();
projectHelper.parse(antProject, new File("deploy.xml"));
antProject.executeTarget("scp-test-target");
antProject.fireBuildFinished(null);
}
But when I run my junit test, the program failed because it not find jsch library.
Problem: failed to create task or type scp
Cause: the class org.apache.tools.ant.taskdefs.optional.ssh.Scp was not found.
This looks like one of Ant's optional components.
So, how can I tell to Ant to link jsch libraries on my file system in programmatically way (so in my Test.java)?
Thanks in advance

Error in a build.xml when using ANT

I write a java package, and I want to compile it into .class files first and then package it. Following codes are what I do in my ant script. Under the directory of "src/compressScript" are four java class I wrote.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><project basedir="."default="compileJava" name="compileJava">
<target name="compileJava">
<mkdir dir="buildTest"/>
<javac includeantruntime="false" srcdir="src/compressScript" destdir="buildTest"/>
</target>
</project>
When I try to use javac task of ANT to run this scirpt, the error is like this:
Buildfile: C:\Users\di_yu\workspace\AffirmedNetworks\buildTest.xml
compileJava:
BUILD FAILED
C:\Users\di_yu\workspace\AffirmedNetworks\buildTest.xml:6:java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : Unsupported major.minor version 52.0
Total time: 545 milliseconds
I check my compiler, the installed JRE is JRE 7.0 and the compiler compliance level is 1.7. So what's the problem?

Configure Apache Ant and Ivy on Windows 7

I'm been attempting to clone and build a project on my Windows 7 box, like so:
git clone git#github.com:corvec/project-name.git
cd project-name
git submodule init
git submodule update
ant clean
ant resolve
All of the commands up until ant resolve work as expected, which gives me the following error message:
Buildfile: c:\workspace\project-name\build.xml
clean-lib:
[delete] Deleting directory c:\workspace\project-name\lib
load-ivy:
resolve:
[echo] Storing dependencies in lib dir: lib
[mkdir] Created dir: c:\workspace\project-name\lib
[ivy:retrieve] :: Ivy 2.1.0 - 20090925235825 :: http://ant.apache.org/ivy/ ::
[ivy:retrieve] :: loading settings :: file = c:\workspace\project-name\core-build\xml\ant\ivy\ivysettings.xml
BUILD FAILED
c:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml:55: impossible to configure
ivy:settings with given file: c:\workspace\project-name\core-build\xml\ant\ivy\ivysettings.xml
: java.text.ParseException: failed to load settings from file:/c:/workspace/project-name/core-build/xml/ant/ivy/ivysettings.xml: io problem while parsing config file: unknown protocol: c
at org.apache.ivy.core.settings.XmlSettingsParser.doParse(XmlSettingsParser.java:165)
at org.apache.ivy.core.settings.XmlSettingsParser.parse(XmlSettingsParser.java:150)
at org.apache.ivy.core.settings.IvySettings.load(IvySettings.java:384)
at org.apache.ivy.Ivy.configure(Ivy.java:411)
at org.apache.ivy.ant.IvyAntSettings.createIvyEngine(IvyAntSettings.java:272)
at org.apache.ivy.ant.IvyAntSettings.getConfiguredIvyInstance(IvyAntSettings.java:237)
at org.apache.ivy.ant.IvyTask.getIvyInstance(IvyTask.java:92)
at org.apache.ivy.ant.IvyTask.prepareTask(IvyTask.java:256)
at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:276)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: java.net.MalformedURLException: unknown protocol: c
at org.apache.ivy.core.settings.XmlSettingsParser.startElement(XmlSettingsParser.java:234)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1343)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:277)
at org.apache.ivy.core.settings.XmlSettingsParser.doParse(XmlSettingsParser.java:160)
... 24 more
Caused by: java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at org.apache.ivy.core.settings.XmlSettingsParser.includeStarted(XmlSettingsParser.java:409)
at org.apache.ivy.core.settings.XmlSettingsParser.startElement(XmlSettingsParser.java:211)
... 38 more
Total time: 0 seconds
EDIT: With the verbose flag applied, I now get the following message:
Apache Ant(TM) version 1.9.0 compiled on March 5 2013
Trying the default build file: build.xml
Buildfile: C:\workspace\project-name\build.xml
Detected Java version: 1.6 in: c:\Program Files\Java\jdk1.6.0_25\jre
Detected OS: Windows 7
parsing buildfile C:\workspace\project-name\build.xml with URI = file:/C:/workspace/project-name/build.xml
Project base dir set to: C:\workspace\project-name
parsing buildfile jar:file:/c:/apache-ant-1.9.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/c:/apache-ant-1.9.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file
[property] Loading C:\workspace\project-name\build.properties
Importing file C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml from C:\workspace\project-name\build.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-basic-targets.xml
Already defined in main or a previous import, ignore build-tests
Already defined in main or a previous import, ignore dist-war
Already defined in main or a previous import, ignore all
Already defined in main or a previous import, ignore console
Importing file C:\workspace\project-name\core-build\xml\ant\build-ant-contrib-targets.xml from
C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-ant-contrib-targets.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-ant-contrib-targets.xml
Overriding previous definition of reference to ant.projectHelper
Importing file C:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml from C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-ivy-targets.xml
Importing file C:\workspace\project-name\core-build\xml\ant\build-ant-contrib-targets.xml from
C:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml
Skipped already imported file:
C:\workspace\project-name\core-build\xml\ant\build-ant-contrib-targets.xml
Importing file C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml from C:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml
Skipped already imported file:
C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml
[property] Loading C:\workspace\project-name\placeholder.build.properties
[property] Unable to find property file: C:\workspace\project-name\placeholder.build.properties
[property] Loading C:\workspace\project-name\core-build\xml\ant\ivy\ivysettings.properties
Property "ivy.basedir" has not been set
Property "ivy.basedir" has not been set
Override ignored for property "shared.base"
Override ignored for property "shared.lib"
Overriding previous definition of reference to ant.projectHelper
[property] Loading C:\workspace\project-name\placeholder.build.properties
[property] Unable to find property file: C:\workspace\project-name\placeholder.build.properties
Override ignored for property "conf.web.dir"
Override ignored for property "jdk.lib"
Importing file C:\workspace\project-name\core-build\xml\ant\build-testing-targets.xml from C:\workspace\project-name\core-build\xml\ant\build-basic-targets.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-testing-targets.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-testing-targets.xml
[macrodef] creating macro do-testing
[macrodef] creating macro test-one-class
[macrodef] creating macro test-classes
Overriding previous definition of reference to ant.projectHelper
Overriding previous definition of reference to ant.projectHelper
Importing file C:\workspace\project-name\core-build\xml\ant\build-eclipse-classpath.xml from C:\workspace\project-name\build.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-eclipse-classpath.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-eclipse-classpath.xml
[property] Loading C:\workspace\project-name\placeholder.build.properties
[property] Unable to find property file: C:\workspace\project-name\placeholder.build.properties
Overriding previous definition of reference to ant.projectHelper
Importing file C:\workspace\project-name\core-build\xml\ant\build-findBugs-targets.xml from C:\workspace\project-name\build.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-findBugs-targets.xml with
URI = file:/C:/workspace/project-name/core-build/xml/ant/build-findBugs-targets.xml
Override ignored for property "shared.lib"
Overriding previous definition of reference to ant.projectHelper
Importing file C:\workspace\project-name\core-build\xml\ant\build-pmd-targets.xml from C:\workspace\project-name\build.xml
Overriding previous definition of reference to ant.projectHelper
parsing buildfile C:\workspace\project-name\core-build\xml\ant\build-pmd-targets.xml with URI = file:/C:/workspace/project-name/core-build/xml/ant/build-pmd-targets.xml
Override ignored for property "shared.lib"
Overriding previous definition of reference to ant.projectHelper
Overriding previous definition of reference to lib.jars
Build sequence for target(s) `resolve' is [clean-lib, load-ivy, resolve]
Complete build sequence is [clean-lib, load-ivy, resolve, build, build-tests, -missing-test-param, project-name.run-one-test-plain, project-name.run-tests-xml, project-name.clean, check-findbugs-filters, runFindBugsFiltered, runFindBugsUnfiltered, project-name.runFindBugs, eclipse-classpath, dist, dist-war, project-name.run-one-test-html, pmd.pmd-html, report, runFindBugsFiltered-html, runFindBugsUnfiltered-html, runFindBugs-html, project-name.dist, project-name.dist-onejar, project-name.eclipse-classpath-with-conf, project-name.clean-cache, instrument-classes, run-tests, report-tests, report-coverage, ivy-version, publish-nodeps,
publish, project-name.publish-nodeps, project-name.run-tests, cpd, run-tests-html, cpd-html, pmd, pmd-all, project-name.ivy-local-version, project-name.create-javadoc, run-one-test-html, project-name.publish, project-name.runFindBugsFiltered-html, resolve-all, run-master-testsuites, clean-local, pmd-html, pmd.pmd-all-html, ivy-local-version, project-name.clean-all-local, runFindBugs, console, pmd.pmd-all, run-one-test-plain, clean-all-local, project-name.resolve_delivered, project-name.report, project-name.load-ivy, project-name.runFindBugs-html, project-name.clean-lib, project-name.post-resolve-echo, project-name.dist-war, project-name.ivy-version, pmd.cpd-html, project-name.ivy-new-version, dist-jar, ivy-new-version, resolve_delivered, project-name.runFindBugsFiltered, project-name.copy-dependencies, project-name.publish-local-nodeps, post-resolve-echo, dist-onejar, clean-cache, project-name.run-tests-plain, create-javadoc, project-name.build, run-test, project-name.all, run-tests-plain, pmd.cpd, test, copy-dependencies, publish-local-nodeps, publish-local, project-name.pom, project-name.report-coverage-xml, report-coverage-xml, project-name.console, project-name.report-tests, project-name.test, project-name.instrument-classes, pmd.pmd, clean, project-name.publish-local, copy-dist, run-jar, dist-reports, project-name.build-tests, project-name.copy-dist, project-name.run-one-test, project-name.dist-reports, project-name.check-findbugs-filters, project-name.-missing-test-param, run-one-test-xml, run-one-test, report-master-testsuites,
project-name.runFindBugsUnfiltered-html, project-name.resolve, build-dep, project-name.dist-jar, project-name.runFindBugsUnfiltered, all, project-name.report-master-testsuites, project-name.build-dep, project-name.resolve-all, project-name.clean-local, pom, project-name.run-tests-html, eclipse-classpath-with-conf, project-name.run-master-testsuites, run-tests-xml, project-name.eclipse-classpath, project-name.run-test, project-name.run-jar, pmd-all-html, project-name.report-coverage, project-name.run-one-test-xml, ]
clean-lib:
load-ivy:
[taskdef] Could not load definitions from resource org/apache/ivy/ant/antlib.xml. It could not be found.
[antlib:org.apache.ivy.ant] Could not load definitions from resource org/apache/ivy/ant/antlib.xml. It could not be found.
BUILD FAILED
C:\workspace\project-name\core-build\xml\ant\build-ivy-targets.xml:24: Problem: failed to create task or type antlib:org.apache.ivy.ant:settings
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
No types or tasks have been defined in this namespace yet
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-c:\apache-ant-1.9.0\lib
-C:\Users\localuser\.ant\lib
-a directory added on the command line with the -lib argument
at org.apache.tools.ant.UnknownElement.getNotFoundException(UnknownElement.java:487)
at org.apache.tools.ant.UnknownElement.makeObject(UnknownElement.java:419)
at org.apache.tools.ant.UnknownElement.maybeConfigure(UnknownElement.java:163)
at org.apache.tools.ant.Task.perform(Task.java:347)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Total time: 0 seconds
I doubt this is an issue with the configuration specific to the project; I'm not the only developer on this project and the other developers have it working. More likely, it is something related to my system's configuration. They are running Linux and Mac OS, if that makes a difference. I suppose it could potentially be related to some files that are not being tracked by git, but I would think that one of the other developers would have noticed that.
I have tried updating the file paths in build.properties to use an absolute path rather than a relative one, as follows (based on this recommendation):
shared.base=file:///c:/workspace/project-name/core-build
instead of
shared.base=core-build
When I do that, I get the following error message:
Apache Ant(TM) version 1.9.0 compiled on March 5 2013
Trying the default build file: build.xml
Buildfile: C:\workspace\project-name\build.xml
Detected Java version: 1.6 in: c:\Program Files\Java\jdk1.6.0_25\jre
Detected OS: Windows 7
parsing buildfile C:\workspace\project-name\build.xml with URI = file:/C:/workspace/project-name/build.xml
Project base dir set to: C:\workspace\project-name
parsing buildfile jar:file:/c:/apache-ant-1.9.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/c:/apache-ant-1.9.0/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file
[property] Loading C:\workspace\project-name\build.properties
Importing file C:\workspace\project-name\file:\C:\workspace\project-name\project-name\core-build\xml\ant\build-basic-targets.xml from C:\workspace\project-name\build.xml
BUILD FAILED
C:\workspace\project-name\build.xml:5: Cannot find C:\workspace\project-name\file:\C:\workspace\project-name\project-name\core-build\xml\ant\build-basic-targets.xml imported from C:\workspace\project-name\build.xml
at org.apache.tools.ant.taskdefs.ImportTask.importResource(ImportTask.java:181)
at org.apache.tools.ant.taskdefs.ImportTask.execute(ImportTask.java:162)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:179)
at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:82)
at org.apache.tools.ant.Main.runBuild(Main.java:826)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Total time: 0 seconds
To that end, here are some relevant details from my system:
PATH = %AMDAPPSDKROOT%bin\x86_64;%AMDAPPSDKROOT%bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;%MAVEN%;%SBT_HOME%;%IRONRUBY_11%;%JAVA_HOME%\bin;%GRAILS_HOME%\bin;%GROOVY_HOME%\bin;%SUBVERSION%\bin;%GIT%\cmd;C:\Utilities;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Microsoft\Web Platform Installer\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;%ANT_HOME%\bin
echo %PATH% = c:\Program Files (x86)\AMD APP\bin\x86_64;c:\Program Files (x86)\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\apache-maven-3.0.4\bin;C:\Program Files (x86)\sbt\;C:\Program Files (x86)\IronRuby 1.1\bin;C:\Program Files\Java\jdk1.6.0_25\bin;C:\Grails\grails-2.1.0\bin;C:\Program Files (x86)\Groovy\Groovy-2.1.1\bin;C:\Program Files (x86)\Subversion\bin;C:\Program Files (x86)\Git\cmd;C:\Utilities;c:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\Microsoft\Web Platform Installer\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\apache-ant-1.9.0\bin;C:\Program Files (x86)\vim\vim73;C:\Ruby193\bin;C:\Python27
%ANT_HOME% = C:\apache-ant-1.9.0
%JAVA_HOME% = C:\Program Files\Java\jdk1.6.0_25
javac -version = 1.6.0_25
I have also attempted to use a new version of Ivy, ivy-2.3.0, but I encounter similar errors.
I think this section is the ivy resolve target:
<target name="resolve" depends="clean-lib, load-ivy" description="--> resolve and retrieve dependencies with ivy">
<echo message="Storing dependencies in lib dir: ${lib.dir}" />
<mkdir dir="lib"/>
<ivy:retrieve />
<ivy:deliver deliverpattern="ivy_delivered.xml" />
</target>
Paths
I've included relevant excerpts of the paths in the build.properties and other related files below:
// build.xml
<property file="build.properties" />
// build.properties
shared.base=core-build
shared.xml=${shared.base}/xml
// build-ivy-targets.xml (imported into build.xml)
<property name="ivy.settings.dir" value="${shared.xml}/ant/ivy" />
Ivy Configuration
<!-- build-ivy-targets.xml (stripped down quite a bit): -->
<project basedir="." default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">
<import file="build-ant-contrib-targets.xml" />
<import file="build-basic-targets.xml" />
<property file="placeholder.build.properties" />
<property name="ivy.settings.dir" value="${shared.xml}/ant/ivy" />
<property file="${ivy.settings.dir}/ivysettings.properties" />
<path id="ivy.lib.path">
<fileset dir="${shared.lib}">
<include name="ant-extensions/ivy*.jar" />
</fileset>
</path>
<path id="lib.jars">
<fileset id="lib.jars.fileset" dir="lib" erroronmissingdir="false">
<include name="*.jar" />
</fileset>
</path>
<!-- `ivy:settings file` is only set here: -->
<target name="load-ivy">
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path" />
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
</target>
<target name="resolve" depends="clean-lib, load-ivy" description="--> resolve and retrieve dependencies with ivy">
<echo message="Storing dependencies in lib dir: ${lib.dir}" />
<mkdir dir="lib"/>
<ivy:retrieve />
<ivy:deliver deliverpattern="ivy_delivered.xml" />
</target>
<target name="clean-lib" description="--> clean the project libraries directory (dependencies)">
<delete includeemptydirs="true" dir="${lib.dir}" />
</target>
</project>
I've figured out that the Apache Ivy error message means that somewhere it is failing to parse a directory and is instead reading it as a URL. What steps should I take to fix this?
Ivy on Windows needs the ivy-settings variable to be set differently than on Linux.
Change the line <ivy:settings file="${ivy.settings.dir}/ivysettings.xml" /> to:
<ivy:settings url="file:/C://workspace//project-name//core-build//xml//ant//ivy//ivysettings.xml" />
It's important to note that two things change:
Rather than setting ivy.settings.file, you are setting ivy.settings.url
You are setting an absolute path rather than a relative one.
The problem is that ant is trying to resolve an import from a relative path rather than an absolute location. See this line in your error?
Cannot find C:\workspace\project-name\file:\C:\workspace\project-name\project-name\core-build\xml\ant\build-basic-targets.xml imported from C:\workspace\project-name\build.xml
Make the path to the imported file be a path relative to the build.xml's directory, like "project-name/core-build/xml/ant/basic-build-targets.xml", and your import statement look something like this:
<import file="${basedir}/${shared.base}"/>

JDO3.0 enhance failure in GAE 1.7.2

I use ant to build my GAE WebApp. This is the datanucleus target:
<target name="datanucleusenhance" depends="compile"
description="Performs enhancement on compiled data classes.">
<enhance_war war="war">
</enhance_war>
</target>
This is the error I got:
org.datanucleus.exceptions.NucleusException: Plugin (Bundle) "org.datanucleus" is already registered. Ensure you dont have multiple JAR versions of the same plugin in the classpath. The URL
"file:/home/xxxx/.eclipse/org.eclipse.platform_4.2.0_1473617060/plugins/com.google.appengine.eclipse.sdkbundle_1.7.2/appengine-java-sdk-1.7.2/lib/opt/tools/datanucleus/v1/datanucleus-core-1.1.5.jar" is already registered, and you are trying to register an identical plugin located at URL "file:/war/WEB-INF/lib/datanucleus-core-3.1.0-m5.jar."
I've tried this ant target:
<target name="datanucleusenhance" depends="compile" description="Performs enhancement on compiled data classes.">
<enhance_war war="war">
<args>
<arg value="-enhancerVersion" />
<arg value="v3.1.0" />
</args>
</enhance_war>
</target>
I've tried to delete "datanucleus-core-1.1.5.jar". The error then is:
java.lang.RuntimeException: Unexpected exception
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:76)
at com.google.appengine.tools.enhancer.Enhance.<init>(Enhance.java:71)
at com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74)
... 2 more
Caused by: java.lang.NoClassDefFoundError: org/datanucleus/OMFContext
at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:172)
at org.datanucleus.enhancer.DataNucleusEnhancer.<init>(DataNucleusEnhancer.java:150)
at org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1157)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.datanucleus.OMFContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at com.google.appengine.tools.enhancer.EnhancerLoader.loadClass(EnhancerLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 10 more
How can I use JDO3.0 with GAE1.7.2?
Using the GAE plugin for Intellij, I had to remove the default configured orm directory, and specifically add the higher version libraries.
The GAE SDK is organized as such:
/lib/user/orm (default persistence libraries I removed)
AND
/lib/opt/user/datanucleus/v2
To access this configuration in IntelliJ, from the context menu for my project:
{context menu} -> Open Module Settings -> Libraries -> AppEngine ORM
Use the [-] button to remove the jars within this directory: /lib/user/orm
Use the [+] button to add the jars within this directory: /lib/opt/user/datanucleus/v2
Got the answer. The correct ant target should be:
<target name="datanucleusenhance" depends="compile" description="Performs enhancement on compiled data classes.">
<enhance_war war="war">
<args>
<arg value="-enhancerVersion" />
<arg value="v2" />
</args>
</enhance_war>
</target>
the version is the GAE JDO/JPA plugin version.(Thanks DataNucleus!:)
You seem to be confusing which versions of dependent jars to use. GAE 1.7.2 uses GAE JDO/JPA plugin v2.x, which in turn needs DataNucleus 3.x. You evidently have (various) DataNucleus 1.x jars present.

How to port an Eclipse Java project to another PC and compile it from Shell?

I have created a Java project in Eclipse and successfully executed it directly from Eclipse on my Windows PC. Now I have to run the same java program on Linux server.
I have tried to copy the .class files from my PC to server and run it but it didn't work. After that I copied the whole project and run javac MyProject.java from shell and it returned the following errors:
RecordImportBatch.java:2: error: package org.apache.commons.io does not exist
import org.apache.commons.io.FileUtils;
...
RecordImportBatch.java:3: error: package org.neo4j.graphdb does not exist
import org.neo4j.graphdb.RelationshipType;
which I guess are caused because I didn't include jar files in compile command.
There are many jar files included in this project and as a Java newbie so far I haven't found the way to compile the project which works in Eclipse from Shell.
Does anyone know if there is a way to get the appropriate compile command directly from Eclipse and just paste it to Shell or do I have to include all jars 'manually'? If this is the case, does anyone know how to include all jars, placed in lib directory which is located in the same folder as MyProject.java?
Thank you!
If you are just learning about java, this suggestion may be some challenge, but it would be good for you to use maven to build your project, which requires reorganizing your source files and directories. And then use the assembly plugin to create a zip that includes all dependencies. Then to run your program, you just do something like:
unzip myapp.zip
cd myapp
java -cp "lib/*" com.blah.MyApp
(you might need to adjust the syntax of the /* part, using single quotes, or removing quotes depending on your shell)
Here is a snippet for the assembly plugin (general purpose... nothing hardcoded other than version, and the path which follows conventions). This goes in pom.xml:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/distribution.xml</descriptor>
</descriptors>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- this is used for inheritance merges -->
<phase>package</phase>
<!-- append to the packaging phase. -->
<goals>
<goal>single</goal>
<!-- goals == mojos -->
</goals>
</execution>
</executions>
</plugin>
And here is an example assembly file (this goes in src/main/assembly/distribution.xml relative to pom.xml):
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"
>
<id>${artifact.version}</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<!-- an example script instead of using "java -cp ..." each time -->
<source>${project.basedir}/src/main/bin/run.sh</source>
<outputDirectory>.</outputDirectory>
<destName>run.sh</destName>
<fileMode>0754</fileMode>
</file>
</files>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/main/resources/</directory>
<outputDirectory>/res/</outputDirectory>
<includes>
<!-- just examples... -->
<include>*.sql</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<directory>config/</directory>
<outputDirectory>/config/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>/lib</outputDirectory>
<excludes>
<!-- add redundant/useless files here -->
</excludes>
</dependencySet>
</dependencySets>
</assembly>
Also, eclipse has a "jar packager" utility in the gui, but I found it to be not very good when I used it a few years ago. And I don't think it handles dependencies, so you would need to take my "-cp" argument above, and add all the jars, or put them in your lib directory yourself.
Also there is this http://fjep.sourceforge.net/ but I have never used it.... I just found it now while quickly looking up the eclipse jar packager. In his tutorial, his last line (showing running it) looks like:
> java -jar demorun_fat.jar
Hello
If what you need to do, is to compile and run your program in Eclipse on your pc and transfer the compiled result to the Linux machine, then use the File -> Export -> Java -> Runnable Jar file and choose the packaging most suitable for you.
The technologically most simple is to use "Copy required libraries into a sub-folder next to the jar" but then you need to distribute by zipping the files together, and unzip them on the Linux box.
I would strongly recommend using any kind of build tools, the de facto standards are Ant or Maven, but you can find several alternatives. Both of them are quite trivial to set up for a smaller project, and using them is also a piece of cake (note that Eclipse can also generate you a basic Ant build.xml file).
For instance, it could be one command to run your whole project:
> ant run
Buildfile: build.xml
clean:
compile:
[mkdir] Created dir: ...
[javac] Compiling N source file to ...
run:
[java] Running application...
main:
BUILD SUCCESSFUL

Categories