<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">What's the story for getting the pathname of the source file?</div><div class="">For example, shell shebang files sometimes use ${0} to do this.</div><div class="">If we point him to that, then he can reload and recompile the</div><div class="">sourcefile for himself.  IIRC, the story is "we don't do that', but</div><div class="">in that case this request could be viewed as another request</div><div class="">for that basic capability for shebang files.</div><div class=""><br class=""></div><div class="">I just grepped the shell shebang files in our source base and</div><div class="">found that 28 out of 187 of them refer to $0 somehow.  Seems</div><div class="">to me like a thing shebang files like to do.  If we don't support it,</div><div class="">maybe that's an RFE worth filing.  Of course, I may have forgotten</div><div class="">some good reason why we didn't do this, in which case sorry for</div><div class="">the noise.</div><div class=""><br class=""></div><div class="">— John</div><div class=""><br class=""></div>On Aug 22, 2018, at 12:41 PM, Jonathan Gibbons <<a href="mailto:jonathan.gibbons@oracle.com" class="">jonathan.gibbons@oracle.com</a>> wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class="">
  
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" class="">
  
  <div bgcolor="#FFFFFF" text="#000000" class="">
    Hi Seth,<br class="">
    <br class="">
    The provision of getResourceAsStream and getResource was considered
    in the implementation of the Source File Launcher feature ... and
    was dismissed at that time.<br class="">
    <br class="">
    * There are no "normal" resources in the (internal)
    MemoryClassLoader; there are only the class files generated from the
    source file. This implies that the provision of these methods in MCL
    is just for the benefit for folk wanting access to the bytyes for a
    .class file. (I'm not that that's bad; I'm just saying that is so.)<br class="">
    <br class="">
    * Yes, we could reasonably easily provide getResourceAsStream, but
    it seems weird to provide getResourceAsStream without also providing
    an equivalent getResource, but URLs are not (currently) supported
    for the content of the MemoryClassLoader.  Yes, internally, some
    "fake" URLs are created to keep the API happy, but these are not
    intended to be used by the end-user, and you'll get an error if you
    try and open a stream from the URL.  I would defer to ClassLoader
    experts as to whether it is reasonable to provide
    getResourceAsStream but not getResource.<br class="">
    <br class="">
    It might be reasonable the jdk.compiler module to provide a
    URLStreamHandlerProvider for these URLs; that would require some
    consideration.<br class="">
    <br class="">
    -- Jon<br class="">
    <br class="">
    <br class="">
    <br class="">
    <div class="moz-cite-prefix">On 08/21/2018 11:07 PM, seth lytle
      wrote:<br class="">
    </div>
    <blockquote cite="mid:CAJtn+AdzHSaK=DOaF6gqcZvU+9+Raq8vp4D2ur6oGLL_s_yjQQ@mail.gmail.com" type="cite" class="">
      <div dir="ltr" class="">i'm working on adding JEP 330 single-file source
        invocation support to kilim (an ASM-based continuations library
        for java for which i'm the primary maintainer).  <span style="font-size:12.8px" class="">we're prepping to promote my fork to
          the main site and i'd like to be able to support java 11
          single-file source invocation as easily as classpath-based
          invocation, or at least confirm that the differences are
          intentional</span><br class="">
        <div class=""><br class="">
        </div>
        <div class="">- i need access to the bytecode to weave it at runtime</div>
        <div class=""><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline" class="">-
            MemoryClassLoader doesn't provide getResourceAsStream</span></div>
        <div class=""><span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline" class="">-
            it does cache the bytecode, so providing this appears to be
            easy to implement</span><br class="">
        </div>
        <div class="">- currently, i access it with a javaagent that mimics
          MemoryClassLoader.map</div>
        <div class="">- <a moz-do-not-send="true" href="https://github.com/nqzero/kilim/#java-versions" class="">https://github.com/nqzero/kilim/#java-versions</a><br class="">
          - getResource is also missing, and again, much of the plumbing
          appears to be in place<br class="gmail-Apple-interchange-newline">
          - i haven't tried manually building the "<a href="memory:///" class="">memory:///</a>" style
          urls<br class="">
          <div class=""><br class="">
          </div>
          <div class="">an example of my current invocation:</div>
          <div class="">
            <div class="">  cp=$(mvn -q dependency:build-classpath
              -Dmdep.outputFile=/dev/fd/1)<br class="">
            </div>
            <div class="">  $java11/bin/java -javaagent:${cp/:*} -cp $cp
              Xorshift.java</div>
            <div class=""><br class="">
            </div>
          </div>
          <div class="">what i'd like to be able to do:</div>
          <div class="">  <span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline" class="">$java11/bin/java
              -cp $cp Xorshift.java</span></div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class="">i saw a previous thread that mentioned getResource in
            passing but no discussion of whether it was considered
            (un)desirable. is this feature planned ? are there problems
            with introducing it ?</div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class="">thanks for the great addition to java - using JEP 330
            feels fun</div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
          <div class=""><br class="">
          </div>
        </div>
      </div>
    </blockquote>
    <br class="">
  </div>

</div></blockquote></div><br class=""></body></html>