[prev in list] [next in list] [prev in thread] [next in thread]
List: ivy-commits
Subject: [jira] Issue Comment Edited: (IVY-590) NullPointerException whilst
From: Jarosław_Wypychowski_(JIRA) <jira () apache ! org>
Date: 2007-08-30 8:54:30
Message-ID: 23269988.1188464070779.JavaMail.jira () brutus
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/IVY-590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523795 \
]
jarwyp edited comment on IVY-590 at 8/30/07 1:53 AM:
-------------------------------------------------------------------
I met the same problem with to current SVN head. I hunted it down in the code.
in ResolveEngine.getDependencies:
...
if (allEvicted) {
Message.verbose("all callers are evicted for " + node + ": \
evicting too"); node.markEvicted(confs[i], null, null, null);
} else {
if (settings.debugConflictResolution()) {
Message.debug(node.getId()
+ " isn't transitively evicted, at least one caller \
was" + " not evicted");
}
}
...
the line with markEvicted can be traced to the default constructor of \
IvyNodeEviction.EvictionData where there is no check against null arguments. A simple \
fix:
Index: src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java
===================================================================
--- src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java (wersja 571054)
+++ src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java (kopia robocza)
@@ -45,13 +45,15 @@
this.parent = parent;
this.conflictManager = conflictManager;
this.selected = selected;
- for (Iterator iter = selected.iterator(); iter.hasNext();) {
- Object o = (Object) iter.next();
- if (!(o instanceof IvyNode)) {
- throw new IllegalArgumentException(
- "selected nodes must be instance of IvyNode. Found: "
- + o.getClass().getName());
- }
+ if(selected!=null){
+ for (Iterator iter = selected.iterator(); iter.hasNext();) {
+ Object o = (Object) iter.next();
+ if (!(o instanceof IvyNode)) {
+ throw new IllegalArgumentException(
+ "selected nodes must be instance of IvyNode. \
Found: " + + o.getClass().getName());
+ }
+ }
}
}
solved the issue for me.
* God bless wiki systems and emoticons - I will include the patch in attachments
was (Author: jarwyp):
I met the same problem with to current SVN head. I hunted it down in the code.
in ResolveEngine.getDependencies:
...
if (allEvicted) {
Message.verbose("all callers are evicted for " + node + ": \
evicting too"); node.markEvicted(confs[i], null, null, null);
} else {
if (settings.debugConflictResolution()) {
Message.debug(node.getId()
+ " isn't transitively evicted, at least one caller \
was" + " not evicted");
}
}
...
the line with markEvicted can be traced to the default constructor of \
IvyNodeEviction.EvictionData where there is no check against null arguments. A simple \
fix:
Index: src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java
===================================================================
--- src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java (wersja 571054)
+++ src/java/org/apache/ivy/core/resolve/IvyNodeEviction.java (kopia robocza)
@@ -45,13 +45,15 @@
this.parent = parent;
this.conflictManager = conflictManager;
this.selected = selected;
- for (Iterator iter = selected.iterator(); iter.hasNext();) {
- Object o = (Object) iter.next();
- if (!(o instanceof IvyNode)) {
- throw new IllegalArgumentException(
- "selected nodes must be instance of IvyNode. Found: "
- + o.getClass().getName());
- }
+ if(selected!=null){
+ for (Iterator iter = selected.iterator(); iter.hasNext();) {
+ Object o = (Object) iter.next();
+ if (!(o instanceof IvyNode)) {
+ throw new IllegalArgumentException(
+ "selected nodes must be instance of IvyNode. \
Found: " + + o.getClass().getName());
+ }
+ }
}
}
solved the issue for me.
> NullPointerException whilst resolving transitive dependencies.
> --------------------------------------------------------------
>
> Key: IVY-590
> URL: https://issues.apache.org/jira/browse/IVY-590
> Project: Ivy
> Issue Type: Bug
> Affects Versions: 2.0.0-alpha-2
> Reporter: Ross Clewley
> Assignee: Maarten Coene
>
> During a resolve of a transitive configuration we see
> java.lang.NullPointerException
> at org.apache.ivy.core.resolve.IvyNodeEviction$EvictionData.<init>(IvyNodeEviction.java:48)
> at org.apache.ivy.core.resolve.IvyNodeEviction.markEvicted(IvyNodeEviction.java:266)
> at org.apache.ivy.core.resolve.IvyNode.markEvicted(IvyNode.java:1101)
> at org.apache.ivy.core.resolve.ResolveEngine.getDependencies(ResolveEngine.java:523)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:236)
> at org.apache.ivy.core.resolve.ResolveEngine.resolve(ResolveEngine.java:194)
> at org.apache.ivy.Ivy.resolve(Ivy.java:256)
> at org.apache.ivy.ant.IvyResolve.doExecute(IvyResolve.java:207)
> at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:281)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> at org.apache.tools.ant.Task.perform(Task.java:348)
> at org.apache.tools.ant.Target.execute(Target.java:357)
> at org.apache.tools.ant.Target.performTasks(Target.java:385)
> at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
> at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
> at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
> at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
> at org.apache.tools.ant.Main.runBuild(Main.java:698)
> at org.apache.tools.ant.Main.startAnt(Main.java:199)
> at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
> at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
> It's difficult to provide a simple testcase for this as I've only seen it in our \
> large modular build system and it's sensitive to things like the order of the \
> dependencies. The modules use the following configurations
> <conf name="default" extends="package" transitive="true"/>
> <conf name="compile" extends="default" visibility="private" transitive="false"/>
> <conf name="runtime" extends="default" visibility="public" transitive="true"/>
> <conf name="test" extends="runtime" transitive="true"/>
> The error occurs when resolving the transitive test conf.
> Another factor that may or not be relevant is that none of our resolvers have a \
> version in the pattern.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic