Thanks for testing, and thanks for pointing that out. I will fix it so that
`public` is optional.

btw, in your example you didn't have to specify `:classname` since you
defined the class name in the source block.

btw2, did you notice that you can C-c C-c on source blocks that don't have
main methods and it'll compile without error?

On Tue, Oct 20, 2020 at 3:17 PM John Herrlin <jherr...@gmail.com> wrote:

>
> Hey,
>
> Did some debugging and found out that my class didn't contained =public=
> and the patch requires it to be.
>
> This works fine:
>
>    #+HEADER: :classname Main
>    #+HEADER: :dir src
>    #+HEADER: :cmdline -classpath ./rxjava-1.3.8.jar:.
>    #+HEADER: :cmpflag -classpath ./rxjava-1.3.8.jar
>    #+BEGIN_SRC java :results output code
>      import rx.Observable;
>      public class Main {
>          public static void main(String[] args) {
>              Observable.range(5, 5)
>                  .subscribe(System.out::println);
>          }
>      }
>    #+END_SRC
>
>
>
>
> ian martins <ia...@jhu.edu> writes:
>
> > I noticed that the tests didn't run with "make test." This updates the
> > patch so that they can. I didn't add java to the list of default
> languages
> > because the java tests are slow.
> >
> > On Mon, Oct 5, 2020 at 9:23 AM ian martins <ia...@jhu.edu> wrote:
> >
> >> I wrote those examples in an org file so I could test as I wrote them,
> and
> >> then exported it to make it more readable, but the export resulted in
> >> source block headers being lost.  Here is the same without export:
> >> ----
> >> * Changes
> >>
> >> - support for functional mode (~:results value~)
> >> - accept variables
> >> - don't require package, class, and main definitions
> >> - write source and result tempfiles to ~org-babel-temporary-directory~,
> >> but respects the ~:dir~ header
> >> - work with tramp
> >>
> >> * Examples
> >> ** Example 1
> >> This outputs "hello."  If class and main definitions aren't given the
> >> code block will be wrapped in generic ones.
> >>
> >> #+begin_src java :results output silent
> >>   System.out.print("hello");
> >> #+end_src
> >>
> >> This is exactly equivalent:
> >>
> >> #+begin_src java :results output silent
> >>   public class Main {
> >>       public static void main(String[] args) {
> >>           System.out.print("hello");
> >>       }
> >>   }
> >> #+end_src
> >>
> >> ** Example 2
> >> This also outputs "hello."
> >>
> >> #+begin_src java :results value silent
> >>   return "hello";
> >> #+end_src
> >>
> >> ** Example 3
> >> This generates the class "Example" in the package "org.orgmode" in the
> >> current directory.
> >>
> >> #+begin_src java :results output silent :classname org.orgmode.Example
> >> :dir .
> >>   System.out.print("hello, org-mode");
> >> #+end_src
> >>
> >> ** Example 4
> >> The "Hey" class defines a static method but no main. C-c C-c on the
> >> "Hey" source block will write "./org/orgmode/Hey.java" and compile it.
> >>
> >> The "Main" class calls the "Hey" class. C-c C-c on the "Main" source
> >> block will write "./org/orgmode/Main.java" and compile and run it.
> >>
> >> #+begin_src java :results output silent :dir .
> >>   package org.orgmode;
> >>
> >>   public class Hey {
> >>       public static String say() {
> >>           return "hey";
> >>       }
> >>   }
> >> #+end_src
> >>
> >> #+begin_src java :results output silent :dir .
> >>   package org.orgmode;
> >>
> >>   public class Main {
> >>       public static void main(String[] args) {
> >>           System.out.print(Hey.say());
> >>       }
> >>   }
> >> #+end_src
> >>
> >> Instead of C-c C-c, we could have added tangle headers and written the
> >> source files out by tangling.
> >>
> >> ** Example 5
> >> This prints the variable from the header
> >>
> >> #+begin_src java :var msg="hello, org-mode" :results output silent
> >>   System.out.print(msg);
> >> #+end_src
> >>
> >> ** Example 6
> >> This prints "hello, org-mode." The table is provided to the method as a
> >> list of lists.
> >>
> >> #+name: table
> >> | message | hello, org-mode  |
> >>
> >> #+begin_src java :var tbl=table :results output silent
> >>   System.out.print(tbl.get(0).get(1));
> >> #+end_src
> >>
> >> ** Example 7
> >> This example returns a list.
> >>
> >> Note that you're allowed to specify imports without defining the class
> >> or main methods.
> >>
> >> #+begin_src java :results value :exports both
> >>   import java.util.Arrays;
> >>
> >>   return Arrays.asList("message", "hello, org-mode");
> >> #+end_src
> >>
> >> #+RESULTS:
> >> | message | hello, org-mode |
> >>
> >> On Mon, Oct 5, 2020 at 8:35 AM ian martins <ia...@jhu.edu> wrote:
> >>
> >>> 1 Changes
> >>> =========
> >>>
> >>>   - support for functional mode (`:results value')
> >>>   - accept variables
> >>>   - don't require package, class, and main definitions
> >>>   - write source and result tempfiles to
> >>>     `org-babel-temporary-directory', but respects the `:dir' header
> >>>   - work with tramp
> >>>
> >>>
> >>> 2 Examples
> >>> ==========
> >>> Some examples follow.  See the tests for more examples.  I'll write
> >>> proper docs after review.
> >>>
> >>> 2.1 Example 1
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This outputs "hello."  If class and main definitions aren't given the
> >>>   code block will be wrapped in generic ones.
> >>>
> >>>   ,----
> >>>   | System.out.print("hello");
> >>>   `----
> >>>
> >>>   This is exactly equivalent:
> >>>
> >>>   ,----
> >>>   | public class Main {
> >>>   |     public static void main(String[] args) {
> >>>   |         System.out.print("hello");
> >>>   |     }
> >>>   | }
> >>>   `----
> >>>
> >>>
> >>> 2.2 Example 2
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This also outputs "hello."
> >>>
> >>>   ,----
> >>>   | return "hello";
> >>>   `----
> >>>
> >>>
> >>> 2.3 Example 3
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This generates the class "Example" in the package "org.orgmode" in
> the
> >>>   current directory.
> >>>
> >>>   ,----
> >>>   | System.out.print("hello, org-mode");
> >>>   `----
> >>>
> >>>
> >>> 2.4 Example 4
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   The "Hey" class defines a static method but no main. C-c C-c on the
> >>>   "Hey" source block will write "./org/orgmode/Hey.java" and compile
> it.
> >>>
> >>>   The "Main" class calls the "Hey" class. C-c C-c on the "Main" source
> >>>   block will write "./org/orgmode/Main.java" and compile and run it.
> >>>
> >>>   ,----
> >>>   | package org.orgmode;
> >>>   |
> >>>   | public class Hey {
> >>>   |     public static String say() {
> >>>   |         return "hey";
> >>>   |     }
> >>>   | }
> >>>   `----
> >>>
> >>>   ,----
> >>>   | package org.orgmode;
> >>>   |
> >>>   | public class Main {
> >>>   |     public static void main(String[] args) {
> >>>   |         System.out.print(Hey.say());
> >>>   |     }
> >>>   | }
> >>>   `----
> >>>
> >>>   Instead of C-c C-c, we could have added tangle headers and written
> the
> >>>   source files out by tangling.
> >>>
> >>>
> >>> 2.5 Example 5
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This prints the variable from the header
> >>>
> >>>   ,----
> >>>   | System.out.print(msg);
> >>>   `----
> >>>
> >>>
> >>> 2.6 Example 6
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This prints "hello, org-mode." The table is provided to the method as
> >>>   a list of lists.
> >>>
> >>>    message  hello, org-mode
> >>>
> >>>   ,----
> >>>   | System.out.print(tbl.get(0).get(1));
> >>>   `----
> >>>
> >>>
> >>> 2.7 Example 7
> >>> ~~~~~~~~~~~~~
> >>>
> >>>   This example returns a list.
> >>>
> >>>   Note that you're allowed to specify imports without defining the
> class
> >>>   or main methods.
> >>>
> >>>   ,----
> >>>   | import java.util.Arrays;
> >>>   |
> >>>   | return Arrays.asList("message", "hello, org-mode");
> >>>   `----
> >>>
> >>>    message  hello, org-mode
> >>>
> >>
>

Reply via email to