]
Bastian Ulke commented on JBIDE-19792:
--------------------------------------
Hi Koen,
Adding the mentioned plug-in didn't solve the issue as Eclipse keeps telling me, that
the required types cannot be used as they are not exported:
{code}
Access restriction: The field 'HqlTokenTypes.AND' is not API (restriction on
required library
'...\workspaces\jee-luna\.metadata\.plugins\org.eclipse.pde.core\.external_libraries\org.jboss.tools.hibernate3_6_4.0.1.Final-v20150324-2307-B95\lib\required\hibernate3.jar')
{code}
Any idea?
antlr packages and lib not exported in Hibernate Tools 4.0.1
------------------------------------------------------------
Key: JBIDE-19792
URL:
https://issues.jboss.org/browse/JBIDE-19792
Project: Tools (JBoss Tools)
Issue Type: Bug
Components: hibernate
Affects Versions: 4.2.3.Final
Environment: Eclipse Luna SR2
Reporter: Bastian Ulke
Assignee: Koen Aers
Attachments: B82_MANIFEST.MF, B95_MANIFEST.MF
I am currently working on an Eclipse-Plugin that is built on top of the
Hibernate Tools project. For example, I am using the following statements
to get the AST of a named query:
{code}
try {
HqlParser parser = HqlParser.getInstance(statementString);
parser.statement();
} catch (RecognitionException | TokenStreamException e) {
e.printStackTrace();
}
AST statementAst = parser.getAST();
{code}
For this to work well with Hibernate Tools Version 4.0.0, I added bundle
org.hibernate.eclipse.libs as required bundle to my plug-in configuration
(which resolved to
org.hibernate.eclipse.libs_4.0.0.Final-v20141016-1911-B82 so far).
However, I now updated to Hiberate Tools 4.0.1
(org.hibernate.eclipse.libs_4.0.1.Final-v20150324-2307-B95). The problem I
have now is that the following imports cannot be resolved:
import antlr.RecognitionException;
import antlr.TokenStreamException;
import antlr.collections.AST;
The problem seems to arise from the fact, that in the new version's
MANIFEST.MF, the antlr... packages are not exported and
lib/hibernate/antlr-2.7.6.jar is not listed in the Bundle-ClassPath any
more (I reformatted both MANIFEST.MFs, that you can find attached, to allow
a convenient comparison). After manually adding the antlr-related entries
to the new version's MANIFEST.MF, my code works pretty well again.
I agree, that internal libraries should generally not be exported. However,
org.hibernate.hql.ast.HqlParser is exported -- so why not its prerequesites?
(By the way, I'd be fine with integrating another library into my project.
However, I tried to manally add antlr-2.7.6.jar as library to
my project, which solved the compilation error, but yields a
java.lang.ClassNotFoundException: antlr.LLkParser cannot be found by
org.hibernate.eclipse.libs_4.0.1.Final-v20150324-2307-B95.)