It looks fine to me, although the files should be change back to have
UNIX-style line endings to minimize diffs (I can easily do that when I
push the change for you).
As for the javafx.web failures, you likely won't get any different
results when building webkit. To fix these failures, you might need to
add the following directory:
modules/javafx.web/src/main/native/Source/WebCore/bindings/java/dom3/java/
-- Kevin
Nir Lisker wrote:
Attached webrev for .classpath changes for all javafx.xxx projects
under /modules (though 2 of them are not modules).
Change details:
- The files were completely rewritten for Eclipse's current modular
support, version 4.8M5, which is pre-release.
- Some projects also need to change module-info.java for test code to
identify imports properly due to bugs in Eclipse. These changes are
excluded from the Webrev.
- Since I didn't build Webkit, the web module has extra errors which I
couldn't address, so the fix does not guarantee that this module will
compile even with Webkit.
- The swt project has external org.eclipse.swt imports which weren't
addressed.
Let's call this round 1. Next rounds will be when Eclipse fixes some
bugs and when the source repo is cleaned from unused projects.
- Nir
On Fri, Feb 2, 2018 at 6:52 PM, Nir Lisker <nlis...@gmail.com
<mailto:nlis...@gmail.com>> wrote:
Alright, got most of them ready.
About buildSrc:
- What is
"rt\buildSrc\build\generated-src\antlr\com\sun\scenario\effect\compiler"
supposed to be? It is listed as a source folder but it's empty.
- The project lists dependencies such as
"build/libs/swt-debug.jar", JUnit and a JRE/JDK, but doesn't need
any of them (from Eclipse's point of view). I see the base module
listing this project as a dependency, but it's not used. Where is
it located in the dependency chain?
On Thu, Feb 1, 2018 at 9:48 PM, Kevin Rushforth
<kevin.rushfo...@oracle.com <mailto:kevin.rushfo...@oracle.com>>
wrote:
It probably makes sense to submit what you have now as a
partially working solution.
As for Eclipse making any changes, I'm not sure there is a
spec you could point to ... we do some of the same magic that
I'm sure other projects have had to do w.r.t running tests:
* We have test "shims" for white-box testing that we add into
our modules when running tests (this requires copying all of
the class files for our modules and adding the shim classes on
top of that)
* We build the tests separately (the tests are in a separate
source set in gradle) without a module-info so that they run
in the unnamed module. This allows them to access JUnit, etc.,
as well as any public package of any module in the system. As
such we need to explicitly list any internal packages that
they use from the module they are testing. These are listed in
src/test/addExports
-- Kevin
Nir Lisker wrote:
Looks like I understood the problem. Eclipse does not support
(yet) multiple modules per project. Do you know any
specifications I can point them to to fix this properly?
The current workaround would be to add 'requires' for all the
modules which are used in tests as well. This change is local
and would be excluded from webrevs.
At this point I can either submit the partially fixed Eclipse
files, which work with main code fully and with test code
only if the above fix is used; or wait until Eclipse sorts it
out.
On Wed, Jan 31, 2018 at 4:21 PM, Kevin Rushforth
<kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>> wrote:
Nir Lisker wrote:
rt/modules/javafx.base/build/classes/main/javafx.base/
rt/modules/javafx.base/src/main/java/
Why not rely on source first?
Yes, that might work...you could try switching the order.
Another question as I move along: there are imports
from java.util.logging in base module, but the
module-info doesn't require java.logging. How do I give
access to these imports?
The only references to java.util.logging are in the
javafx.base unit tests, which are compiled and run in the
unnamed modules (no module-info.java for the unit tests).
-- Kevin
On Tue, Jan 30, 2018 at 9:03 PM, Kevin Rushforth
<kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>> wrote:
Oh, I see. You are pointing to the exploded modules
for the JDK in build/XXXXX/jdk rather than the JDK
image in build/XXXXX/images/jdk.
Yes, I think it would be preferable to both reverse
the order and also add in the location of the built
class files. So the following order seems best:
rt/modules/javafx.base/build/classes/main/javafx.base/
rt/modules/javafx.base/src/main/java/
jdk/modules/javafx.base
-- Kevin
Nir Lisker wrote:
This is what I mean: In the
type
/base/src/test/java/test/com/sun/javafx/collections/ListListenerHelperTest.java
there are these imports:
import test.javafx.collections.MockListObserver;
import java.util.BitSet;
import javafx.beans.Observable;
The first one is the one in
FX:
rt\modules\javafx.base\src\test\java\test\javafx\collections\MockListObserver.java
The second one is in the referenced JDK which was
built with
FX: jdk\modules\java.base\java\util\BitSet.class
The third one exists in both:
- in JFX it's in:
rt\modules\javafx.base\src\main\java\javafx\beans\Observable.java
- in the JDK it's
in: jdk\modules\javafx.base\javafx\beans\Observable.class
Does the question make sense now?
On Tue, Jan 30, 2018 at 5:04 AM, Kevin Rushforth
<kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>> wrote:
one in
"rt\modules\javafx.base\src\main\java\javafx\beans\InvalidationListener.java"
or the one in
"jdk\modules\javafx.base\javafx\beans\InvalidationListener.class"?
Not sure I get what you mean. There isn't a
jdk/modules/ directory created by the build.
Perhaps this is an Eclipse construct that it
uses to indicate the modules that are in the
JDK that you are using? The FX build puts the
class files in:
rt/build/modular_sdk/modules/javafx.base/...
-- Kevin
Nir Lisker wrote:
Another question: do imports of javafx.*
packages point to the javafx source or to the
jdk compilation?
For example, in the base module, the type
test.javafx.beans.InvalidationListenerMock
imports javafx.beans.InvalidationListener
(twice, by the way, along with Observable).
Should the imported class be the one in
"rt\modules\javafx.base\src\main\java\javafx\beans\InvalidationListener.java"
or the one in
"jdk\modules\javafx.base\javafx\beans\InvalidationListener.class"?
Currently, the way it is in the Eclipse files
is that the jdk .class files are imported
first[1], but it seemed odd to me - if I work
on 2 files which depend on each other they
should see the changes in each other at once.
[1]http://hg.openjdk.java.net/openjfx/jfx-dev/rt/file/305d127c6ed5/modules/javafx.base/.classpath
<http://hg.openjdk.java.net/openjfx/jfx-dev/rt/file/305d127c6ed5/modules/javafx.base/.classpath>
("JRE_CONTAINER" is before "src/main/java"),
- Nir
On Fri, Jan 26, 2018 at 9:20 PM, Kevin
Rushforth <kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>> wrote:
inline
Nir Lisker wrote:
Alright, cleaned that part. fxpackager
build fails with an internal NPE in
Eclipse, so I'm going to leave that alone
and all of the projects that depends on it.
Now that projects can be built there are
errors in deeper levels:
1. All org.junit imports cannot be
resolved. This causes tons of errors in
various test folders obviously. All the
.classpath files use
<classpathentry kind="con"
path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
which is a jar distributed with Eclipse
(in the plugins folder) with version
4.12.0. Is this really where the imports
are supposed to come from? How does it
work in Netbeans or IntelliJ?
For NetBeans we use their internal version
of JUnit. I don't know about IntelliJ
(maybe someone else on the list can answer
that).
2. In the 'base' module, in
"/src/main/java-jfr/com/sun/javafx/logging"
there are imports of
com.oracle.jrockit.jfr that can't be
resolved. Where are these located?
These classes used to be part of the JFR
commercial feature in the Oracle JDK. The
java-jfr sources are obsolete and no
longer built (and no longer buildable), so
you can safely remove it from your IDE
files. I also still see references to it
in the netbeans/base project. I will file
a bug to remove this obsolete code and fix
the NetBeans references at the same time.
-- Kevin
On Thu, Jan 25, 2018 at 5:24 PM, Kevin
Rushforth <kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>> wrote:
Ah, I see. Then yes, just removing
the old ones is fine.
As for the larger question, unless
there are dependencies on apps, you
can assume that the only ones you
care about are the ones created by
"gradle sdk".
-- Kevin
Nir Lisker wrote:
So this is why I was asking about
the optional stuff: 'graphics'
module has BOTH
build/resources/jsl-decora
build/resources/jsl-prism
and
build/gensrc/jsl-decora
build/gensrc/jsl-prism
That led me to think that when the
new dependencies were added the old
ones weren't removed. Those that
weren't optional (like the
/resources ones, which I removed)
were easy to catch and we could have
finished here. Those that are
optional are not causing trouble
even when missing because they are
optional.
gradle sdk does not create the ones
which are marked optional that Iv'e
surveyed, but I don't know if that's
the only way they can be created. If
I compare solely with gradle sdk
then I can just remove whatever is
missing on grounds that it's left over.
- Nir
On Thu, Jan 25, 2018 at 4:06 PM,
Kevin Rushforth
<kevin.rushfo...@oracle.com
<mailto:kevin.rushfo...@oracle.com>>
wrote:
One more thing about the
specific path you mentioned as
not being there.
<classpathentry kind="src"
exported="true"
path="build/resources/jsl-decora"/>
<classpathentry kind="src"
exported="true"
path="build/resources/jsl-prism"/>
These are still being created by
'gradle sdk', but the path is
wrong (the files moved in JDK 9)
and should be:
build/gensrc/jsl-decora
build/gensrc/jsl-prism
You might want to take that into
account.
-- Kevin
Kevin Rushforth wrote:
Nir Lisker wrote:
Iv'e removed all the
classpath dependencies
that were causing
errors. I don't mind
sorting out the rest of
the files while at it,
though for that there
are a few things I'm not
sure about:
1. Some dependencies are
marked as optional and
as such they don't cause
errors, but they are
still missing. Is it
safe to remove them or
is it possible that they
will be created as some
point?
Some of them might be
created...not sure without
checking. I recommend
running "gradle sdk" and
then seeing if the
dependencies are there.
Examples are the 'base'
module with
"src/test/resources" and
"src/main/resources"
optional dependencies,
and 'controls' module
has the optional
dependency
"src/main/resources"
commented out.
I see. You might as well
leave them, but it probably
doesn't matter.
2. Can I assume that all
other dependencies are
really needed? (Eclipse
won't complain about
unused ones as far as I
know.)
That seems best.
3. What are the
formatting standards for
XML (indentation, line
length...)? From a quick
look I see different
styles in different files.
For IDE files, we don't
worry about formatting. In
many cases they are
auto-generated anyway.
-- Kevin
- Nir