Are you using jbosstools/hibernate tools hibernate bundle to access
hibernate user classes, i.e. NOT for the tooling related usecases ?
Then I would say you should not be doing that ever. Use hibernate
directly and packaged/configured for your app instead.
Hibernate now supports osgi based persistence providers and you might
want to look into that at
We never used that as it wouldn't allow the flexibility needed for the
tools to isolate it self from users class loaders.
/max
Yes, this classloader is loading classes from the user's Eclipse
project.
Yes, it extends java.net.URLClassLoader.
It doesn't work because class loading and resource loading is
different in
Java 9. Especially in eclipse.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=497287
https://bugs.eclipse.org/bugs/show_bug.cgi?id=507417
At least classLoader.getPlatformClassLoader() must be used.
On Fri, Mar 16, 2018 at 1:21 PM, Jean-Francois Maury
<jmaury(a)redhat.com>
wrote:
> Not sure to understand #2: are you creating a classloader that is
> loading
> classes from the user's Eclipse project ? Is it based on URL
> classloader ?
> I don't why it is not working ?
>
> On Fri, Mar 16, 2018 at 10:12 AM, Dmitrii Bocharov
> <dbocharo(a)redhat.com>
> wrote:
>
>> Hi
>> it's a long time i'm trying to make jbosstools-hibernate work with
>> Java.
>> The main problem is the class loader:
https://github.com/jbo
>> sstools/jbosstools-hibernate/blob/b3826209cae7327a91615e0c0
>> 88006e54a4b5447/plugins/org.hibernate.eclipse/src/org/hibern
>> ate/eclipse/console/common/HibernateExtension.java#L58.
>>
>> *sub-problem #1 (getResource) method *(solved)
>> If you google how to load resources in Java 9, then you find that
>> now you
>> should do *classloader.getUnnamedModule().getResourceAsStream()*
>> instead
>> of previous *classloader**.getResourceAsStream(). *But we want, that
>> our
>> code could be built inside Java 7 Execution Environment (see
>> MANIFEST.MF).
>> So what i did for the *getResource
>>
<
https://github.com/jbosstools/jbosstools-hibernate/blob/b3826209cae7327a9...
>> method. If we have null for *super.getResource(name)*, then i
>> manually
>> search for resources next to hibernate.cfg.xml
>> using java.nio.file.Files.walkFileTree. And it works! It needs to be
>> polished a little bit, but anyway it solves the problem.
>>
>> *sub-problem #2 (findClass)* method (HELP NEEDED)
>> After the resource is found (and in hibernate usually it's a mapping
>> xml
>> file) using the solution above, we try to associate it with the
>> class and
>> load it with the classloader. However, the current
>> *classloader.findClass
>>
<
https://github.com/jbosstools/jbosstools-hibernate/blob/b3826209cae7327a9...
>> doesn't find anything (ClassNotFoundException). I tried to
>> *HibernatePlugin.getDefault().getBundle().loadClass(name)*, because
>> i
>> found that this loading classes stuff is fixed in core Eclipse and
>> bundles
>> must load classes without problems, but it doesn't work either.
>>
>> So my main questions are:
>>
>> 1) This code is rather old, and i suppose that it must be refactored
>> in
>> general. If you have any thoughts of how to do it better, i'd be
>> glad if
>> you share them :)
>> 2) How to load user classes correctly now in Java 9 in Eclipse?
>> 3) Maybe the better way is to create a plugin/feature with a minimal
>> Execution Environment set to Java 9, which will be activated only
>> when java
>> 9 is used and implement such things like
>> *classloader.getUnnamedModule().getResourceAsStream()
>> *there? And switching between them using extension points mechanism.
>> Is
>> it possible? Does it worth it? If yes, then it'll require quite big
>> work,
>> in my opinion.
>>
>>
>> Looking forward to any help.
>> Thanks in advance!
>> Bocharov Dmitrii
>>
>> _______________________________________________
>> jbosstools-dev mailing list
>> jbosstools-dev(a)lists.jboss.org
>>
https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>
>
>
>
> --
>
> JEFF MAURY
>
> Red Hat
>
> <
https://www.redhat.com/>
>
> jmaury(a)redhat.com
> <
https://red.ht/sig>
> <
https://redhat.com/summit>
> @redhatjobs <
https://twitter.com/redhatjobs> redhatjobs
> <
https://www.facebook.com/redhatjobs/> @redhatjobs
> <
https://instagram.com/redhatjobs>
>
_______________________________________________
jbosstools-dev mailing list
jbosstools-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jbosstools-dev