Configure Apache Ant and Ivy on Windows 7 - java
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}"/>
Related
NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout Wrapping Problem Launch4j
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>
Error in generating javadoc using UMLGraph, getting error in processing "dot file"
I am trying to generate class diagram from the source code through UmlGraph. I have built and created the umlgraph.jar but while i am using it in my project it is giving me the below error :: [javadoc] java.io.IOException: Cannot run program "dot": CreateProcess error=2, The system cannot find the file specified [javadoc] at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) [javadoc] at java.lang.Runtime.exec(Runtime.java:593) [javadoc] at java.lang.Runtime.exec(Runtime.java:466) [javadoc] at org.umlgraph.doclet.UmlGraphDoc.runGraphviz(UmlGraphDoc.java:131) [javadoc] at org.umlgraph.doclet.UmlGraphDoc.generatePackageDiagrams(UmlGraphDoc.java:95) [javadoc] at org.umlgraph.doclet.UmlGraphDoc.start(UmlGraphDoc.java:63) [javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [javadoc] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [javadoc] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [javadoc] at java.lang.reflect.Method.invoke(Method.java:597) [javadoc] at com.sun.tools.javadoc.DocletInvoker.invoke(DocletInvoker.java:269) [javadoc] at com.sun.tools.javadoc.DocletInvoker.start(DocletInvoker.java:143) [javadoc] at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:340) [javadoc] at com.sun.tools.javadoc.Start.begin(Start.java:128) [javadoc] at com.sun.tools.javadoc.Main.execute(Main.java:41) [javadoc] at com.sun.tools.javadoc.Main.main(Main.java:31) I have downloaded the GraphViz and set the path for the graphviz. please help me guys i am new to this one. The javadoc target in ant file :: <fileset dir="${srcroot.dir}" > <filename name="**/*.java"/> </fileset> <doclet name="org.umlgraph.doclet.UmlGraphDoc" path="${umlLib.dir}/UmlGraph.jar"> <param name="-attributes" /> <param name="-operations" /> <param name="-qualify" /> <param name="-types" /> <param name="-visibility" /> </doclet> </javadoc> <apply executable="dot" dest="${reports.dir}" parallel="false"> <arg value="-Tpng"/> <arg value="-o"/> <targetfile/> <srcfile/> <fileset dir="${reports.dir}" includes="*.dot"/> <mapper type="glob" from="*.dot" to="*.png"/> </apply> </target>
I got the same "dot" message. http://sourceforge.net/p/schemaspy/discussion/462849/thread/38a9bfad/#7a89 indicates to restart your machine after installing GraphViz and adding it to your path. I did this and that did the trick.
Add path to \graphviz-2.38\release to your classpath and you are done.
I had the common issues about the mysql-connector and the dot executable file. It's not necessary to restart the machine if you pass the correct value to -gv, believe me. I've installed the Graphviz and found the mysql-connector performing a sorted search of *.jar files. The following lines are how I executed the statement. java -jar schemaSpy.jar -t mysql -o library -host localhost -db dummyDB -u user -p user -dp C:\Oracle\Middleware\Oracle_Home\oracle_common\modules\mysql-connector-java-commercial-5.1.22\mysql-connector-java-commercial-5.1.22-bin.jar -gv "C:\Program Files (x86)\Graphviz2.38"
This requires installation of GraphViz. Information is available here. https://graphviz.gitlab.io/download/
Using external libraries in Java
Here's the error I keep getting at runtime: [java] Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException Note, this is a runtime error, not a compile-time one. Both tasks in my build.xml have an identical classpath set, and the compile task runs fine every single time: <path id="classpath"> <fileset dir="lib" includes="*.jar" /> </path> <target name="compile"> <mkdir dir="build/classes"/> <javac srcdir="src" classpathref="classpath" includeantruntime="false" destdir="build/classes" /> </target> ... <target name="run" depends="clean,compile,jar"> <java jar="build/jar/${project.name}.jar" fork="true" classpathref="classpath" > <sysproperty key="java.library.path" path="${path.lib}/windows"/> </java> </target> Trying to run the jar via command-line manually yields the same result: java -cp .:lib/*.jar -Djava.library.path=lib/windows -jar build/jar/JUtopia.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException Note that the library jarfile is ok: bash-3.1$ jar -tf lib/lwjgl.jar | grep LWJGLException org/lwjgl/LWJGLException.class And the native libraries are in place: bash-3.1$ ls lib/windows/lwjgl.dll lib/windows/lwjgl.dll The question: where the blazes have I gone wrong? I've been beating at this problem for nearly 3 days. Any help would be much appreciated. Full result stack: clean: [delete] Deleting directory C:\Users\mkumpan\Projects\JUtopia\build compile: [mkdir] Created dir: C:\Users\mkumpan\Projects\JUtopia\build\classes [javac] Compiling 12 source files to C:\Users\mkumpan\Projects\JUtopia\build\classes jar: [mkdir] Created dir: C:\Users\mkumpan\Projects\JUtopia\build\jar [jar] Building jar: C:\Users\mkumpan\Projects\JUtopia\build\jar\JUtopia.jar run: [java] Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException [java] at JUtopia.<init>(Unknown Source) [java] at JUtopia.main(Unknown Source) [java] Caused by: java.lang.ClassNotFoundException: org.lwjgl.LWJGLException [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366) [java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355) [java] at java.security.AccessController.doPrivileged(Native Method) [java] at java.net.URLClassLoader.findClass(URLClassLoader.java:354) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) [java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) [java] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) [java] ... 2 more P.S.: Note, I'm using Console2 with bash in a windows environment for my commandline work, thus the windows natives yet linux shell syntax. Using vanilla cmd to run the jar yields the same result.
-jar... When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored. - reference try setting the Class-Path in the JAR Alternatively try running without the -Jar option, by specifying the main class on the command line
One of the possible causes is that while loading the class LWJGLException it also references another class which can't be found on the classpath. Hence the reported error is sometimes not clear. Important here is thet you have this NoClassDefFoundError and not ClassNotFoundException which is the error you assume you are having: it cannot find the class LWHLException, yes it can ! But it cannot load it....
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.
Issue with proxy while running Ant script
I'm developing an Ant script for my project purposes and figured out that my proxy causes problem for me. Here is the simplest example from Apache documentation of 'copy' task: =================== build.xml ===================== <project default="simplestCopy"> <property name="test.dir" value="${basedir}/test/" /> <target name="simplestCopy"> <mkdir dir="${test.dir}" /> <copy todir="${test.dir}" flatten="true"> <resources> <url url="http://ant.apache.org/index.html"/> </resources> </copy> </target> </project> I've got next error: d:\temp>ant Buildfile: d:\temp\build.xml simplestCopy: java.net.ConnectException: Connection refused: connect BUILD FAILED d:\temp\build.xml:7: Warning: Could not find resource url "http://ant.apache.org/index.html" to copy. I've tried to set kind of <property name="java.net.useSystemProxies" value="true" /> And define this property in command line d:\temp>ant -Djava.net.useSystemProxies=true -verbose But got same error: d:\temp>ant -Djava.net.useSystemProxies=true -verbose Apache Ant version 1.8.1 compiled on April 30 2010 Trying the default build file: build.xml Buildfile: d:\temp\build.xml Detected Java version: 1.6 in: c:\ProgramFiles\Java\jdk1.6.0_24\jre Detected OS: Windows XP parsing buildfile d:\temp\build.xml with URI = file:/d:/temp/build.xml Project base dir set to: d:\temp parsing buildfile jar:file:/C:/ProgramFiles/Java/apache-ant-1.8.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/C:/ProgramFiles/Java/apache-ant-1.8.1/lib/ant.jar!/org/apache/tools/ant/antlib.xml from a zip file Build sequence for target(s) `simplestCopy' is [simplestCopy] Complete build sequence is [simplestCopy, ] simplestCopy: [mkdir] Skipping d:\temp\test because it already exists. java.net.ConnectException: Connection refused: connect BUILD FAILED d:\temp\build.xml:7: Warning: Could not find resource url "http://ant.apache.org/index.html" to copy. at org.apache.tools.ant.taskdefs.Copy.execute(Copy.java:487) 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:390) at org.apache.tools.ant.Target.performTasks(Target.java:411) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397) at org.apache.tools.ant.Project.executeTarget(Project.java:1366) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1249) at org.apache.tools.ant.Main.runBuild(Main.java:801) at org.apache.tools.ant.Main.startAnt(Main.java:218) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) Total time: 1 second Any ideas how to fix? Thanks for help...
Use the setproxy task: http://ant.apache.org/manual/Tasks/setproxy.html
I started the tomcat server and then issue the command and it works