dajester2013 / ivysvn

Automatically exported from code.google.com/p/ivysvn
Apache License 2.0
0 stars 0 forks source link

error reading manifest file #11

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
(orignally reported by jkytomak as part of
http://code.google.com/p/ivysvn/issues/detail?id=5)

I tested now this with 2.0.0-beta4 (bin release witj JDK 1.6) and the
manifest problem is stil present:

java.text.ParseException: failed to load settings from
file:/my/path/ivysettings.xml:
bad method found for svn on class org.apache.ivy.core.settings.IvySettings
        at
org.apache.ivy.core.settings.XmlSettingsParser.doParse(XmlSettingsParser.java:16
2)
        at
org.apache.ivy.core.settings.XmlSettingsParser.parse(XmlSettingsParser.java:147)
        at org.apache.ivy.core.settings.IvySettings.load(IvySettings.java:377)
        at org.apache.ivy.Ivy.configure(Ivy.java:411)
        at
org.apache.ivy.ant.IvyAntSettings.createIvyEngine(IvyAntSettings.java:265)
        at
org.apache.ivy.ant.IvyAntSettings.getConfiguredIvyInstance(IvyAntSettings.java:2
31)
        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:193)
        at org.apache.tools.ant.Task.perform(Task.java:341)
        at org.apache.tools.ant.Target.execute(Target.java:309)
        at org.apache.tools.ant.Target.performTasks(Target.java:336)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1339)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1255)
        at org.apache.tools.ant.Main.runBuild(Main.java:609)
        at org.apache.tools.ant.Main.start(Main.java:196)
        at org.apache.tools.ant.Main.main(Main.java:235)
Caused by: java.lang.IllegalArgumentException: bad method found for svn on
class
org.apache.ivy.core.settings.IvySetting
s
        at
org.apache.ivy.util.Configurator.startCreateChild(Configurator.java:535)
        at
org.apache.ivy.core.settings.XmlSettingsParser.inConfiguratorStarted(XmlSettings
Parser.java:536)
        at
org.apache.ivy.core.settings.XmlSettingsParser.startElement(XmlSettingsParser.ja
va:198)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.
dispatch(Unknown
Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        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:15
7)
        ... 17 more
Caused by: java.lang.NullPointerException
        at
fm.last.ivy.plugins.svnresolver.SvnRepository.getManifest(SvnRepository.java:155
)
        at
fm.last.ivy.plugins.svnresolver.SvnRepository.<init>(SvnRepository.java:136)
        at
fm.last.ivy.plugins.svnresolver.SvnResolver.<init>(SvnResolver.java:34)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
        at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorI
mpl.java:39)
        at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorA
ccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at org.apache.ivy.util.Configurator.addChild(Configurator.java:586)
        at
org.apache.ivy.util.Configurator.startCreateChild(Configurator.java:503)
        ... 30 more

and that fails the whole build.

Original issue reported on code.google.com by massdosage on 15 Oct 2008 at 10:25

GoogleCodeExporter commented 9 years ago
Have you tried this in your ivy settings file?

    <classpath file="${build.lib.build.dir}/ivysvnresolver.jar"/>
    <classpath file="${build.lib.build.dir}/trilead-ssh2.jar"/>
    <classpath file="${build.lib.build.dir}/svnkit.jar"/>

    <typedef
        name="svn"
        classname="fm.last.ivy.plugins.svnresolver.SvnResolver" />

Original comment by stvricbr...@gmail.com on 15 Oct 2008 at 11:56

GoogleCodeExporter commented 9 years ago
That is precily how I use ivy-svn in our ivySettings:
    <classpath file="${ivy.settings.dir}/external_lib/ivysvnresolver-1.4-patched.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/svnkit-1.1.8.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/ssh2-build213.jar"/>
    <classpath file="${ivy.settings.dir}/external_lib/commons-httpclient-3.0.jar"/>

    <typedef name="svn" classname="fm.last.ivy.plugins.svnresolver.SvnResolver"/>

The patch in the other issues fixes the problem.
Maybe it's has something to do with that we are using ANT 1.5.

Original comment by jkyto...@gmail.com on 16 Oct 2008 at 6:37

GoogleCodeExporter commented 9 years ago
I tried setting up my classpath the same as yours and I still don't get that 
error.
If you still get this using a beta version of Ivy 2.0.0 with Ant 1.7 let me 
know,
otherwise unfortunately there's not much I can do about this.

Original comment by massdosage on 16 Oct 2008 at 10:13

GoogleCodeExporter commented 9 years ago

Original comment by massdosage on 16 Oct 2008 at 10:16

GoogleCodeExporter commented 9 years ago
Can't you make these 2 changes:

-    } catch (IOException e) {
-      Message.warn(("Could not load manifest: " + e.getMessage()));
+    } catch (Exception e) {
+      Message.warn(("Could not load manifest: " + e));
+       e.printStackTrace();

Catch all erros so that failing to read manifest woulnd't crash the whole build

And this fixes reading of manifest:

-    String classFilePath = someClass.getPackage().toString().replace('.', '/') 
+ "/"
+ className;
+    String classFilePath = someClass.getName().replace('.', '/') + ".class";
+      Message.verbose("IvySvnResolver classFilePath: " + classFilePath);
     String pathToThisClass = someClass.getResource(classFileName).toString();
     String pathToManifest = pathToThisClass.toString().substring(0,
-        pathToThisClass.length() + 2 - ("/" + classFilePath).length())
-        + "/META-INF/MANIFEST.MF";
+        pathToThisClass.length() - classFilePath.length()) + 
"META-INF/MANIFEST.MF";
+      Message.verbose("IvySvnResolver pathToManifest: " + pathToManifest);

It seems that in my environment the getPackage() returns null.
The API  
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html#getPackage()
states:

"    Returns:
        the package of the class, or null if no package information is available from
the archive or codebase."

Original comment by jkyto...@gmail.com on 16 Oct 2008 at 2:55

GoogleCodeExporter commented 9 years ago
OK, I would rather not catch(Exception) if I can avoid it but I tried using the 
code
you provided for getting the path to the manifest which doesn't use 
getPackage() and
that seems to work fine. So I would like to use that. Are you happy for me to 
include
it in IvySvn and release it under the Apache license? You will get credit in the
release notes for the fix. Let me know.

Original comment by massdosage on 17 Oct 2008 at 12:25

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
This fix has been committed and will go into 2.0.0-beta5, thanks!

Original comment by massdosage on 17 Oct 2008 at 6:10

GoogleCodeExporter commented 9 years ago
Great, this removes the need to patch the release by ourself. Thank you!

Original comment by jkyto...@gmail.com on 20 Oct 2008 at 11:51