]
Petr Široký reassigned DROOLS-1449:
-----------------------------------
Assignee: (was: Petr Široký)
Confusing error messages in certain combination of invalid type
declerations/imports
------------------------------------------------------------------------------------
Key: DROOLS-1449
URL:
https://issues.jboss.org/browse/DROOLS-1449
Project: Drools
Issue Type: Feature Request
Components: build, tools
Affects Versions: 6.5.0.Final
Reporter: Jappie Klooster
Priority: Minor
The following drools will make the error handling flip:
{code:drools}
package dialogue;
import java.util.Unkown
declare DefaultReply
symbol:Unkown
end
{code}
Will result in:
[ERROR] Failed to execute goal org.kie:kie-maven-plugin:6.5.0.Final:build (default-build)
on project salve_drools: Execution default-build of goal
org.kie:kie-maven-plugin:6.5.0.Final:build failed: A required class was missing while
executing org.kie:kie-maven-plugin:6.5.0.Final:build: Ljava/util/Unkown;
[ERROR] -----------------------------------------------------
[ERROR] realm = extension>org.kie:kie-maven-plugin:6.5.0.Final
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] =
file:/home/username/.m2/repository/org/kie/kie-maven-plugin/6.5.0.Final/kie-maven-plugin-6.5.0.Final.jar
[ERROR] urls[1] =
file:/home/username/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.20/plexus-utils-3.0.20.jar
[ERROR] urls[2] =
file:/home/username/.m2/repository/org/eclipse/aether/aether-util/1.0.0.v20140518/aether-util-1.0.0.v20140518.jar
[ERROR] urls[3] =
file:/home/username/.m2/repository/javax/enterprise/cdi-api/1.0-SP4/cdi-api-1.0-SP4.jar
[ERROR] urls[4] =
file:/home/username/.m2/repository/org/jboss/spec/javax/interceptor/jboss-interceptors-api_1.1_spec/1.0.1.Final/jboss-interceptors-api_1.1_spec-1.0.1.Final.jar
[ERROR] urls[5] =
file:/home/username/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar
[ERROR] urls[6] =
file:/home/username/.m2/repository/org/sonatype/sisu/sisu-guice/3.2.3/sisu-guice-3.2.3-no_aop.jar
[ERROR] urls[7] =
file:/home/username/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar
[ERROR] urls[8] =
file:/home/username/.m2/repository/com/google/guava/guava/13.0.1/guava-13.0.1.jar
[ERROR] urls[9] =
file:/home/username/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar
[ERROR] urls[10] =
file:/home/username/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[11] =
file:/home/username/.m2/repository/org/sonatype/plexus/plexus-cipher/1.7/plexus-cipher-1.7.jar
[ERROR] urls[12] =
file:/home/username/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[13] =
file:/home/username/.m2/repository/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar
[ERROR] urls[14] =
file:/home/username/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar
[ERROR] urls[15] =
file:/home/username/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar
[ERROR] urls[16] =
file:/home/username/.m2/repository/com/google/collections/google-collections/1.0/google-collections-1.0.jar
[ERROR] urls[17] = file:/home/username/.m2/repository/junit/junit/4.12/junit-4.12.jar
[ERROR] urls[18] =
file:/home/username/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[ERROR] urls[19] =
file:/home/username/.m2/repository/com/google/protobuf/protobuf-java/2.6.0/protobuf-java-2.6.0.jar
[ERROR] urls[20] =
file:/home/username/.m2/repository/org/drools/drools-core/6.5.0.Final/drools-core-6.5.0.Final.jar
[ERROR] urls[21] =
file:/home/username/.m2/repository/org/mvel/mvel2/2.2.8.Final/mvel2-2.2.8.Final.jar
[ERROR] urls[22] =
file:/home/username/.m2/repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar
[ERROR] urls[23] =
file:/home/username/.m2/repository/org/drools/drools-compiler/6.5.0.Final/drools-compiler-6.5.0.Final.jar
[ERROR] urls[24] =
file:/home/username/.m2/repository/org/antlr/antlr-runtime/3.5/antlr-runtime-3.5.jar
[ERROR] urls[25] =
file:/home/username/.m2/repository/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar
[ERROR] urls[26] =
file:/home/username/.m2/repository/com/thoughtworks/xstream/xstream/1.4.9/xstream-1.4.9.jar
[ERROR] urls[27] =
file:/home/username/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar
[ERROR] urls[28] =
file:/home/username/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar
[ERROR] urls[29] =
file:/home/username/.m2/repository/org/kie/kie-api/6.5.0.Final/kie-api-6.5.0.Final.jar
[ERROR] urls[30] =
file:/home/username/.m2/repository/org/kie/kie-internal/6.5.0.Final/kie-internal-6.5.0.Final.jar
[ERROR] urls[31] =
file:/home/username/.m2/repository/org/drools/drools-decisiontables/6.5.0.Final/drools-decisiontables-6.5.0.Final.jar
[ERROR] urls[32] =
file:/home/username/.m2/repository/org/apache/poi/poi-ooxml/3.13/poi-ooxml-3.13.jar
[ERROR] urls[33] =
file:/home/username/.m2/repository/org/apache/poi/poi-ooxml-schemas/3.13/poi-ooxml-schemas-3.13.jar
[ERROR] urls[34] =
file:/home/username/.m2/repository/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar
[ERROR] urls[35] =
file:/home/username/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar
[ERROR] urls[36] =
file:/home/username/.m2/repository/org/apache/poi/poi/3.13/poi-3.13.jar
[ERROR] urls[37] =
file:/home/username/.m2/repository/org/drools/drools-templates/6.5.0.Final/drools-templates-6.5.0.Final.jar
[ERROR] urls[38] =
file:/home/username/.m2/repository/org/drools/drools-scorecards/6.5.0.Final/drools-scorecards-6.5.0.Final.jar
[ERROR] urls[39] =
file:/home/username/.m2/repository/org/drools/drools-pmml/6.5.0.Final/drools-pmml-6.5.0.Final.jar
[ERROR] urls[40] =
file:/home/username/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.11/jaxb-impl-2.2.11.jar
[ERROR] urls[41] =
file:/home/username/.m2/repository/com/sun/xml/bind/jaxb-core/2.2.11/jaxb-core-2.2.11.jar
[ERROR] urls[42] =
file:/home/username/.m2/repository/org/jbpm/jbpm-bpmn2/6.5.0.Final/jbpm-bpmn2-6.5.0.Final.jar
[ERROR] urls[43] =
file:/home/username/.m2/repository/org/jbpm/jbpm-flow-builder/6.5.0.Final/jbpm-flow-builder-6.5.0.Final.jar
[ERROR] urls[44] =
file:/home/username/.m2/repository/org/jbpm/jbpm-flow/6.5.0.Final/jbpm-flow-6.5.0.Final.jar
[ERROR] urls[45] =
file:/home/username/.m2/repository/joda-time/joda-time/1.6.2/joda-time-1.6.2.jar
[ERROR] urls[46] =
file:/home/username/.m2/repository/org/drools/drools-workbench-models-guided-dtable/6.5.0.Final/drools-workbench-models-guided-dtable-6.5.0.Final.jar
[ERROR] urls[47] =
file:/home/username/.m2/repository/org/drools/drools-workbench-models-datamodel-api/6.5.0.Final/drools-workbench-models-datamodel-api-6.5.0.Final.jar
[ERROR] urls[48] =
file:/home/username/.m2/repository/org/drools/drools-workbench-models-commons/6.5.0.Final/drools-workbench-models-commons-6.5.0.Final.jar
[ERROR] urls[49] =
file:/home/username/.m2/repository/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar
[ERROR] urls[50] =
file:/home/username/.m2/repository/org/drools/drools-workbench-models-guided-template/6.5.0.Final/drools-workbench-models-guided-template-6.5.0.Final.jar
[ERROR] urls[51] =
file:/home/username/.m2/repository/org/drools/drools-workbench-models-guided-scorecard/6.5.0.Final/drools-workbench-models-guided-scorecard-6.5.0.Final.jar
[ERROR] urls[52] =
file:/home/username/.m2/repository/org/slf4j/slf4j-simple/1.7.2/slf4j-simple-1.7.2.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------: java.util.Unkown
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the
following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :salve_drools
----
If the type decleration does not use the symbol ie:
{code:java}
package dialogue;
import java.util.Unkown
declare DefaultReply
symbol:String
end
{code}
the error message becomes a lot better:
[ERROR] Unable to build KieBaseModel:rules
Error importing : 'java.util.Unkown'
[ function parseUtteranceparseUtterance (line:-5): Only a type can be imported.
java.util.Unkown resolves to a package
]
Rule Compilation error : [Rule name='Parse raw user utterence into parsed utterance
(something we understand)']
dialogue/Rule_Parse_raw_user_utterence_into_parsed_utterance_$u40$something_we_understand$u41$1360960339.java
(2:300) : Only a type can be imported. java.util.Unkown resolves to a package
dialogue/Rule_Parse_raw_user_utterence_into_parsed_utterance_$u40$something_we_understand$u41$1360960339.java
(2:1068) : The import dialogue.ParseUtterance cannot be resolved
dialogue/Rule_Parse_raw_user_utterence_into_parsed_utterance_$u40$something_we_understand$u41$1360960339.java
(8:1848) : The method parseUtterance(PatternDatabase, UnparsedUserUtterance, String) is
undefined for the type
Rule_Parse_raw_user_utterence_into_parsed_utterance_$u40$something_we_understand$u41$1360960339
Rule Compilation error : [Rule name='Pick out the first symbol and insert it']
dialogue/Rule_Pick_out_the_first_symbol_and_insert_it851572034.java (2:300) :
Only a type can be imported. java.util.Unkown resolves to a package
_ [... other rules that fail (not sure if I can show them) .. ]_
Error importing : 'dialogue.ParseUtterance.parseUtterance'
[ERROR] Message [id=1, kieBase=rules, level=ERROR, path=model.drl, line=1, column=0
text=Error importing : 'java.util.Unkown']
[ERROR] Message [id=2, kieBase=rules, level=ERROR, path=rules.drl, line=-5, column=0
text=[ function parseUtteranceparseUtterance (line:-5): Only a type can be imported.
java.util.Unkown resolves to a package
]]
[ERROR] Message [id=3, kieBase=rules, level=ERROR, path=rules.drl, line=32, column=0
text=Rule Compilation error Only a type can be imported. java.util.Unkown resolves to
a package
The import dialogue.ParseUtterance cannot be resolved
The method parseUtterance(PatternDatabase, UnparsedUserUtterance, String) is undefined
for the type
Rule_Parse_raw_user_utterence_into_parsed_utterance_$u40$something_we_understand$u41$1360960339]
[ERROR] Message [id=4, kieBase=rules, level=ERROR, path=rules.drl, line=81, column=0
text=Rule Compilation error Only a type can be imported. java.util.Unkown resolves to
a package
The import dialogue.ParseUtterance cannot be resolved]
[ERROR] Message [id=5, kieBase=rules, level=ERROR, path=rules.drl, line=7, column=0
text=Rule Compilation error Only a type can be imported. java.util.Unkown resolves to
a package
The import dialogue.ParseUtterance cannot be resolved
The constructor DefaultReply(Symbol) is undefined]
[ERROR] Message [id=6, kieBase=rules, level=ERROR, path=rules.drl, line=90, column=0
text=Rule Compilation error Only a type can be imported. java.util.Unkown resolves to
a package
The import dialogue.ParseUtterance cannot be resolved]
[ERROR] Message [id=7, kieBase=rules, level=ERROR, path=rules.drl, line=72, column=0
text=Rule Compilation error Only a type can be imported. java.util.Unkown resolves to
a package
The import dialogue.ParseUtterance cannot be resolved
The method randomLiteral(Random) is undefined for the type String]
[ERROR] Message [id=8, kieBase=rules, level=ERROR, path=rules.drl, line=-1, column=0
text=Error importing : 'dialogue.ParseUtterance.parseUtterance']
----
What I'm missing from the first case is the file name where the linking fails, and
the line numbers where Unkown occurs.
It should also be much more obvious about what symbol can't be found.
Dumping each jar that is used is not very helpful since most people will use maven. It
should dump instead all the maven dependencies.