Ok reading my last message I realize it still might not be clear. Here's
what I observed:

The class Codec clearly loaded, (from the lucene-core jar) when
Codec$Holder tried to load the class initializer code went looking for the
service definitions. It failed to find any of the the
META-INF/services/org.apache.lucene.codec.Codec files in any of the jars
residing in ~/.m2/repository (where the class evidently loads from),
including the one in **the same jar that Codec had loaded from** and I
observed it throwing Security exception by debugging at a level underneath
the quoted method in my longer message above.

So what it seems to imply is that the ability of java to load a class from
a jar on the class path is not related to the FilePermission needed to load
the services file.

So what I want to communicate to the user is 2 things:

1. They are running a security manager, so the policy file is relevant.
2. The fact they are not seeing a SecurityException does not eliminate the
possibility that they are missing permissions.

We should craft a message that is clearer and communicates those two points.

Adding a permission to the policy for the tests fixed everything (once I
found the right policy file).

-Gus

On Tue, May 16, 2023 at 11:10 PM Gus Heck <gus.h...@gmail.com> wrote:

> Oh hmm the google UI hid the quoted bit. If you don't like message let's
> improve it. (actually, it should probably say the "file in the jar"... or
> something a little more specific... not the jar entirely. The class loads,
> but the service loader cant access the file in the same jar without the
> FilePermission to (re?) access the jar it seems)
>
> On Tue, May 16, 2023 at 11:05 PM Gus Heck <gus.h...@gmail.com> wrote:
>
>> I propose to improve the message on an exception already thrown.
>>
>> On Tue, May 16, 2023 at 11:04 PM Ishan Chattopadhyaya <
>> ichattopadhy...@gmail.com> wrote:
>>
>>> You propose to throw an exception containing this, right?
>>>
>>> > Java does not throw SecurityException if this
>>> is the case, it just ignores the jar!
>>>
>>> Are you serious?
>>>
>>> On Wed, 17 May, 2023, 8:02 am Gus Heck, <gus.h...@gmail.com> wrote:
>>>
>>>> Blaming?
>>>>
>>>> On Tue, May 16, 2023 at 10:05 PM Ishan Chattopadhyaya <
>>>> ichattopadhy...@gmail.com> wrote:
>>>>
>>>>> > Having that explicitly called out would have been SUPER helpful.
>>>>>
>>>>> Blaming Java in an exception thrown by Lucene is a ridiculous idea.
>>>>>
>>>>> On Wed, 17 May, 2023, 3:33 am Gus Heck, <gus.h...@gmail.com> wrote:
>>>>>
>>>>>> Found it.
>>>>>>
>>>>>> It's a solr thing made worse by the interaction of lucene testutils
>>>>>> and
>>>>>> jdk.internal.loader.URLClassPath's decision to hide anything gone
>>>>>> wrong
>>>>>> when checking a URL
>>>>>>     /*
>>>>>>      * Checks whether the resource URL should be returned.
>>>>>>      * Returns null on security check failure.
>>>>>>      * Called by java.net.URLClassLoader.
>>>>>>      */
>>>>>>     public static URL checkURL(URL url) {
>>>>>>         if (url != null) {
>>>>>>             try {
>>>>>>                 check(url);
>>>>>>             } catch (Exception e) {
>>>>>>                 return null;
>>>>>>             }
>>>>>>         }
>>>>>>         return url;
>>>>>>     }
>>>>>>
>>>>>> Yay. Fun. JDK classes swallowing exceptions silently.
>>>>>>
>>>>>> At the start of this it only took me a little while to discover that
>>>>>> there
>>>>>> was a security manager in play via debugging. Remembering that I saw
>>>>>> emails
>>>>>> about that, I went to jira, found the ticket enabling it by default
>>>>>> in 9.x
>>>>>> and eventually tracked down the name of the security policy file by
>>>>>> reading
>>>>>> solr.in.sh and /bin/solr...  The key issue that tripped me up is
>>>>>> that the
>>>>>> tests have a *separate* security policy file, and there was pretty
>>>>>> much no
>>>>>> way to know this without extensive reading of the build. Thus I got
>>>>>> thrown
>>>>>> off track when
>>>>>>
>>>>>>   permission java.io.FilePermission
>>>>>> "${user.home}${/}.m2${/}repository${/}-", "read";
>>>>>>
>>>>>> To  solr/server/etc/security.policy had no effect. That and the fact
>>>>>> that
>>>>>> no security exception was reported, led me to start chasing
>>>>>> increasingly
>>>>>> improbable hypotheses. Many hours later when I went back to debugging
>>>>>> deeply into class loading, I found that the code was actually reading
>>>>>> the
>>>>>> jar files in question, and then I finally caught it throwing a
>>>>>> security
>>>>>> exception during my debugging.
>>>>>>
>>>>>> It turns out that adding the above permission to
>>>>>> gradle/testing/randomization/policies/solr-tests.policy allows the
>>>>>> test to
>>>>>> pass. [1]
>>>>>>
>>>>>> I think we need to document this somewhere (or someone needs to point
>>>>>> me to
>>>>>> the doc I missed, FWIW I hit this basically following the process in
>>>>>> dev-docs/dependency-upgrades.adoc treating lucene like a dependency,
>>>>>> and
>>>>>> unaware that there is a "shortcut" mode for lucene specifically in
>>>>>> gradle/lucene-dev/lucene-dev-repo-composite.gradle and I find reading
>>>>>> that
>>>>>> file none-to clear anyway)
>>>>>>
>>>>>> That's the solr part, the lucene part is that the security exception
>>>>>> is hit
>>>>>> when in org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:58)
>>>>>> when
>>>>>> org.apache.lucene.tests.util.TestRuleSetupAndRestoreClassEnv#before
>>>>>> does
>>>>>>
>>>>>>      savedCodec = Codec.getDefault();
>>>>>>
>>>>>> The error message "An SPI class of type
>>>>>> org.apache.lucene.codecs.Codec with
>>>>>> name 'Lucene95' does not exist." was moderately misleading because
>>>>>> the file
>>>>>> and the services files in the jar definitely did exist. This message
>>>>>> should
>>>>>> vary if there is an installed security manager, maybe saying
>>>>>> something like:
>>>>>>
>>>>>> "An SPI class of type org.apache.lucene.codecs.Codec with name
>>>>>> 'Lucene95'
>>>>>> does not exist. We have detected that a security manager is installed
>>>>>> so it
>>>>>> is also possible that the jar containing the codec is inaccessible
>>>>>> under
>>>>>> the current security policy. (Java does not throw SecurityException
>>>>>> if this
>>>>>> is the case, it just ignores the jar!)" [2]
>>>>>>
>>>>>> Having that explicitly called out would have been SUPER helpful.
>>>>>>
>>>>>> -Gus
>>>>>>
>>>>>> [1]: https://issues.apache.org/jira/browse/SOLR-16804
>>>>>> [2]: https://github.com/apache/lucene/issues/12300
>>>>>>
>>>>>>
>>>>>> On Mon, May 15, 2023 at 3:17 PM Michael Sokolov <msoko...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> > random guess - does it have something to do with modules?
>>>>>> >
>>>>>> > On Mon, May 15, 2023 at 11:14 AM Gus Heck <gus.h...@gmail.com>
>>>>>> wrote:
>>>>>> > >
>>>>>> > > I hadn't seen that one. Thanks, I'll look at it. It already looks
>>>>>> a bit
>>>>>> > confusing though since it seems to have options for pointing to a
>>>>>> repo, but
>>>>>> > I appear to be pulling the jars successfully from .m2/repository
>>>>>> already...
>>>>>> > (except then they don't work, so successful means I see them in the
>>>>>> > classpath of the relevant classloader). And if we can't deploy a
>>>>>> valid jar
>>>>>> > to mavenLocal for some reason (tweaked the solr build so it sees
>>>>>> > mavenLocal()), (or solr can't consume such a jar) that seems like
>>>>>> an issue
>>>>>> > for whichever one is breaking that.
>>>>>> > >
>>>>>> > > Debugging: The JDK appears to be attempting to load the services
>>>>>> file
>>>>>> > from modules, but not seeing the lucene module. (just the jdk ones)
>>>>>> Also it
>>>>>> > passes through a block that says:
>>>>>> > >
>>>>>> > >             // not in a package of a module defined to this loader
>>>>>> > >             for (URL url : findMiscResource(name)) {
>>>>>> > >
>>>>>> > > (but then iterates
>>>>>> > jdk.internal.loader.BuiltinClassLoader#nameToModule.values() to
>>>>>> load things
>>>>>> > anyway)
>>>>>> > >
>>>>>> > > -Gus
>>>>>> > >
>>>>>> > > On Mon, May 15, 2023 at 10:54 AM Houston Putman <
>>>>>> houstonput...@gmail.com>
>>>>>> > wrote:
>>>>>> > >>
>>>>>> > >> Gus, I haven't done this myself, but are you using the
>>>>>> instructions
>>>>>> > provided in Solr's
>>>>>> "gradle/lucene-dev/lucene-dev-repo-composite.gradle"?
>>>>>> > >>
>>>>>> > >> It looks like you need to specify the development lucene version
>>>>>> > differently than other dependencies...
>>>>>> > >>
>>>>>> > >> - Houston
>>>>>> > >>
>>>>>> > >> On Sat, May 13, 2023 at 10:14 AM Michael Sokolov <
>>>>>> msoko...@gmail.com>
>>>>>> > wrote:
>>>>>> > >>>
>>>>>> > >>> doh I actually read your email and you said you already checked
>>>>>> that -
>>>>>> > >>> I'm going to send out one of those "sokolov would like to
>>>>>> retract the
>>>>>> > >>> previous email" emails. Does GMail even pretend to do that? I
>>>>>> don't
>>>>>> > >>> know what's going on there! sorry
>>>>>> > >>>
>>>>>> > >>> On Sat, May 13, 2023 at 10:13 AM Michael Sokolov <
>>>>>> msoko...@gmail.com>
>>>>>> > wrote:
>>>>>> > >>> >
>>>>>> > >>> > sorry - META-INF not WEB-INF
>>>>>> > >>> >
>>>>>> > >>> > On Sat, May 13, 2023 at 10:12 AM Michael Sokolov <
>>>>>> msoko...@gmail.com>
>>>>>> > wrote:
>>>>>> > >>> > >
>>>>>> > >>> > > You are probably missing the contents of WEB-INF in your
>>>>>> custom
>>>>>> > jar?
>>>>>> > >>> > > Roughly speaking the files in there define run-time-bound
>>>>>> > "services"
>>>>>> > >>> > > that are looked up by name by the JDK's service-loader API.
>>>>>> > >>> > >
>>>>>> > >>> > > On Sat, May 13, 2023 at 9:33 AM Gus Heck <
>>>>>> gus.h...@gmail.com>
>>>>>> > wrote:
>>>>>> > >>> > > >
>>>>>> > >>> > > > Cross posting to lucene on the possibility that folks
>>>>>> here are
>>>>>> > more likely to add customized lucene to Solr and recognize what I'm
>>>>>> > stumbling on? (zero responses on solr list)
>>>>>> > >>> > > >
>>>>>> > >>> > > > Note that the specific test that I happened to copy is
>>>>>> not the
>>>>>> > issue, all tests are doing this (or at least so many tests are
>>>>>> failing I
>>>>>> > can't see the ones that are passing easily).
>>>>>> > >>> > > >
>>>>>> > >>> > > > ---------- Forwarded message ---------
>>>>>> > >>> > > > From: Gus Heck <gus.h...@gmail.com>
>>>>>> > >>> > > > Date: Wed, May 10, 2023 at 6:50 PM
>>>>>> > >>> > > > Subject: Running 10.0 build with a custom lucene 9.5
>>>>>> > >>> > > > To: <d...@solr.apache.org>
>>>>>> > >>> > > >
>>>>>> > >>> > > >
>>>>>> > >>> > > > Lucene:
>>>>>> > >>> > > >
>>>>>> > >>> > > > I made a tweak to lucene for something I'm investigating,
>>>>>> gave
>>>>>> > it a new version, deployed to mavenLocal()
>>>>>> > >>> > > > I have verified that the jars are built with correct
>>>>>> > META-INF/services files
>>>>>> > >>> > > >
>>>>>> > >>> > > > Solr:
>>>>>> > >>> > > >
>>>>>> > >>> > > > I added mavenLocal() in gradle/globals.gradle
>>>>>> > >>> > > > I removed the license file sha1 sigs for the default
>>>>>> lucene &
>>>>>> > creates signatures for my test version
>>>>>> > >>> > > > I updated versions.props
>>>>>> > >>> > > > I updated versions.lock
>>>>>> > >>> > > >
>>>>>> > >>> > > > Now when I run individual solr tests via my ide they seem
>>>>>> to
>>>>>> > pass, but virtually every test run via gradle fails with something
>>>>>> like:
>>>>>> > >>> > > >
>>>>>> > >>> > > > org.apache.solr.embedded.TestJettySolrRunner >
>>>>>> classMethod FAILED
>>>>>> > >>> > > >     java.lang.ExceptionInInitializerError
>>>>>> > >>> > > >         at
>>>>>> > org.apache.lucene.codecs.Codec.getDefault(Codec.java:141)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleSetupAndRestoreClassEnv.before(TestRuleSetupAndRestoreClassEnv.java:137)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:42)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
>>>>>> > >>> > > >         at
>>>>>> org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
>>>>>> > >>> > > >         at java.base/java.lang.Thread.run(Thread.java:829)
>>>>>> > >>> > > >
>>>>>> > >>> > > >         Caused by:
>>>>>> > >>> > > >         java.lang.IllegalArgumentException: An SPI class
>>>>>> of type
>>>>>> > org.apache.lucene.codecs.Codec with name 'Lucene95' does not
>>>>>> exist.  You
>>>>>> > need to add the corresponding JAR file supporting this SPI to your
>>>>>> > classpath.  The current classpath supports the following names: []
>>>>>> > >>> > > >             at
>>>>>> >
>>>>>> org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:113)
>>>>>> > >>> > > >             at
>>>>>> > org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:58)
>>>>>> > >>> > > >             ... 19 more
>>>>>> > >>> > > >
>>>>>> > >>> > > > org.apache.solr.embedded.TestJettySolrRunner >
>>>>>> classMethod FAILED
>>>>>> > >>> > > >     java.lang.NullPointerException
>>>>>> > >>> > > >         at
>>>>>> > java.base/java.util.Objects.requireNonNull(Objects.java:221)
>>>>>> > >>> > > >         at
>>>>>> > org.apache.lucene.codecs.Codec.setDefault(Codec.java:151)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleSetupAndRestoreClassEnv.after(TestRuleSetupAndRestoreClassEnv.java:292)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:49)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
>>>>>> > >>> > > >         at
>>>>>> org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>>>>>> > >>> > > >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
>>>>>> > >>> > > >         at java.base/java.lang.Thread.run(Thread.java:829)
>>>>>> > >>> > > >
>>>>>> > >>> > > > org.apache.solr.embedded.TestJettySolrRunner > test
>>>>>> suite's
>>>>>> > output saved to
>>>>>> >
>>>>>> /Users/gus/projects/apache/solr/code/solr/solr/test-framework/build/test-results/test/outputs/OUTPUT-org.apache.solr.embedded.TestJettySolrRunner.txt,
>>>>>> > copied below:
>>>>>> > >>> > > >    >     java.lang.ExceptionInInitializerError
>>>>>> > >>> > > >    >         at
>>>>>> > org.apache.lucene.codecs.Codec.getDefault(Codec.java:141)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleSetupAndRestoreClassEnv.before(TestRuleSetupAndRestoreClassEnv.java:137)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:42)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
>>>>>> > >>> > > >    >         at
>>>>>> > org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
>>>>>> > >>> > > >    >         at
>>>>>> java.base/java.lang.Thread.run(Thread.java:829)
>>>>>> > >>> > > >    >
>>>>>> > >>> > > >    >         Caused by:
>>>>>> > >>> > > >    >         java.lang.IllegalArgumentException: An SPI
>>>>>> class of
>>>>>> > type org.apache.lucene.codecs.Codec with name 'Lucene95' does not
>>>>>> exist.
>>>>>> > You need to add the corresponding JAR file supporting this SPI to
>>>>>> your
>>>>>> > classpath.  The current classpath supports the following names: []
>>>>>> > >>> > > >    >             at
>>>>>> >
>>>>>> org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:113)
>>>>>> > >>> > > >    >             at
>>>>>> > org.apache.lucene.codecs.Codec$Holder.<clinit>(Codec.java:58)
>>>>>> > >>> > > >    >             ... 19 more
>>>>>> > >>> > > >    >     java.lang.NullPointerException
>>>>>> > >>> > > >    >         at
>>>>>> > java.base/java.util.Objects.requireNonNull(Objects.java:221)
>>>>>> > >>> > > >    >         at
>>>>>> > org.apache.lucene.codecs.Codec.setDefault(Codec.java:151)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleSetupAndRestoreClassEnv.after(TestRuleSetupAndRestoreClassEnv.java:292)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:49)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:38)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:43)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:44)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:60)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> org.apache.lucene.tests.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:47)
>>>>>> > >>> > > >    >         at
>>>>>> > org.junit.rules.RunRules.evaluate(RunRules.java:20)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
>>>>>> > >>> > > >    >         at
>>>>>> >
>>>>>> com.carrotsearch.randomizedtesting.ThreadLeakControl.lambda$forkTimeoutingTask$0(ThreadLeakControl.java:850)
>>>>>> > >>> > > >    >         at
>>>>>> java.base/java.lang.Thread.run(Thread.java:829)
>>>>>> > >>> > > >   2> NOTE: Mac OS X 12.6 aarch64/Azul Systems, Inc.
>>>>>> 11.0.19
>>>>>> > (64-bit)/cpus=10,threads=1,free=235002360,total=268435456
>>>>>> > >>> > > >   2> NOTE: All tests run in this JVM:
>>>>>> [TestJettySolrRunner]
>>>>>> > >>> > > >   2> NOTE: reproduce with: gradlew test --tests
>>>>>> > TestJettySolrRunner -Dtests.seed=2FB768B5A303764
>>>>>> -Dtests.asserts=true
>>>>>> > -Dtests.file.encoding=UTF-8
>>>>>> > >>> > > >
>>>>>> > >>> > > > The only difference I've been able to determine is that
>>>>>> the IDE
>>>>>> > does not run the test with a security manager, but that feels like
>>>>>> a red
>>>>>> > herring since nothing is throwing security exception (or if it is,
>>>>>> it's
>>>>>> > getting swallowed!).
>>>>>> > >>> > > >
>>>>>> > >>> > > > I have debugged and I can see that the classloaders have
>>>>>> the new
>>>>>> > lucene jars I built on the classpath (in /Users/gus/.m2/repository
>>>>>> as they
>>>>>> > should), but I haven't yet figuree out why the services are not
>>>>>> loading.
>>>>>> > >>> > > >
>>>>>> > >>> > > > -Gus
>>>>>> > >>> > > >
>>>>>> > >>> > > >
>>>>>> > >>> > > > --
>>>>>> > >>> > > > http://www.needhamsoftware.com (work)
>>>>>> > >>> > > > http://www.the111shift.com (play)
>>>>>> > >>> > > >
>>>>>> > >>> > > >
>>>>>> > >>> > > > --
>>>>>> > >>> > > > http://www.needhamsoftware.com (work)
>>>>>> > >>> > > > http://www.the111shift.com (play)
>>>>>> > >>>
>>>>>> > >>>
>>>>>> ---------------------------------------------------------------------
>>>>>> > >>> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
>>>>>> > >>> For additional commands, e-mail: dev-h...@lucene.apache.org
>>>>>> > >>>
>>>>>> > >
>>>>>> > >
>>>>>> > > --
>>>>>> > > http://www.needhamsoftware.com (work)
>>>>>> > > http://www.the111shift.com (play)
>>>>>> >
>>>>>> >
>>>>>> ---------------------------------------------------------------------
>>>>>> > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
>>>>>> > For additional commands, e-mail: dev-h...@lucene.apache.org
>>>>>> >
>>>>>> >
>>>>>>
>>>>>> --
>>>>>> http://www.needhamsoftware.com (work)
>>>>>> http://www.the111shift.com (play)
>>>>>>
>>>>>
>>>>
>>>> --
>>>> http://www.needhamsoftware.com (work)
>>>> http://www.the111shift.com (play)
>>>>
>>>
>>
>> --
>> http://www.needhamsoftware.com (work)
>> http://www.the111shift.com (play)
>>
>
>
> --
> http://www.needhamsoftware.com (work)
> http://www.the111shift.com (play)
>


-- 
http://www.needhamsoftware.com (work)
http://www.the111shift.com (play)

Reply via email to