Loading ...
Sorry, an error occurred while loading the content.

Re: Running Java

Expand Messages
  • michael_j_barber
    I ve taken a look at the Java mode scripts, and I think I know what the problem is. However, I don t really do any Java programming, so I can t be completely
    Message 1 of 4 , Feb 4, 2008
    • 0 Attachment
      I've taken a look at the Java mode scripts, and I think I know what the problem is.
      However, I don't really do any Java programming, so I can't be completely certain. I can tell
      you what to try in order to get things clear, though, and then maybe a solution will
      become apparent.

      Here's my thinking. You're seeing an error at compile time, not at run time. The "Compile"
      and "Compile and run" scripts do not call the compiler in the same way. Both use "do shell
      script" to call out to the shell, but not using the same command string.

      "Compile" switches to the directory containing the front SEE document, which is your
      main(). It then compiles the document using javac. You don't really say, but I'm guessing
      that "Compile" works OK?

      "Compile and run" doesn't work that way. It just calls javac to do the compilation. That's
      equivalent to something like:
      # cd /
      # javac -encoding UTF8 path/to/your/mainfile.java
      Would that give the error you're seeing from "Compile and run"?


      --- In SubEthaEdit@yahoogroups.com, "Peter K. Johnson" <peter.johnson@...> wrote:
      >
      > When I use the Compile and Run button on the menu bar SubEthaEdit compiles
      > my classes okay but gives me an error that it can¹t find a class that is
      > external to the class containing my main( ). Both the class with main( ) and
      > the class that is called from main( ) are in the same folder.
      >
      > If I go into Terminal window and run the program from the command prompt it
      > works perfectly so I know my code is correct. (It¹s also a very simple test
      > program.)
      >
      > Is there a script or setting that I can change to get the Compile and Run
      > button to work properly?
      >
      > Peter Johnson
      >
    • petermankato
      Michael, Thanks for the details. The problem seems to be when Java is called to run the compiled program. I did a quick video (using Jing) to show what
      Message 2 of 4 , Feb 4, 2008
      • 0 Attachment
        Michael,
        Thanks for the details. The problem seems to be when Java is called to
        run the compiled program. I did a quick video (using Jing) to show
        what happens: http://screencast.com/t/BJh2c1cSu

        I know that this is not good form, using a class directly
        (Keyboard.readDouble( )) but this is the second program my students
        write for Java I and I build off of this experience as the semester
        unfolds.

        Thanks for your help in figuring out how to change the script so I can
        use the Compile and Run button.

        Peter

        --- In SubEthaEdit@yahoogroups.com, "michael_j_barber"
        <michael_j_barber@...> wrote:
        >
        > I've taken a look at the Java mode scripts, and I think I know what
        the problem is.
        > However, I don't really do any Java programming, so I can't be
        completely certain. I can tell
        > you what to try in order to get things clear, though, and then maybe
        a solution will
        > become apparent.
        >
        > Here's my thinking. You're seeing an error at compile time, not at
        run time. The "Compile"
        > and "Compile and run" scripts do not call the compiler in the same
        way. Both use "do shell
        > script" to call out to the shell, but not using the same command
        string.
        >
        > "Compile" switches to the directory containing the front SEE
        document, which is your
        > main(). It then compiles the document using javac. You don't really
        say, but I'm guessing
        > that "Compile" works OK?
        >
        > "Compile and run" doesn't work that way. It just calls javac to do
        the compilation. That's
        > equivalent to something like:
        > # cd /
        > # javac -encoding UTF8 path/to/your/mainfile.java
        > Would that give the error you're seeing from "Compile and run"?
        >
        >
        > --- In SubEthaEdit@yahoogroups.com, "Peter K. Johnson"
        <peter.johnson@> wrote:
        > >
        > > When I use the Compile and Run button on the menu bar SubEthaEdit
        compiles
        > > my classes okay but gives me an error that it can¹t find a class
        that is
        > > external to the class containing my main( ). Both the class with
        main( ) and
        > > the class that is called from main( ) are in the same folder.
        > >
        > > If I go into Terminal window and run the program from the command
        prompt it
        > > works perfectly so I know my code is correct. (It¹s also a very
        simple test
        > > program.)
        > >
        > > Is there a script or setting that I can change to get the Compile
        and Run
        > > button to work properly?
        > >
        > > Peter Johnson
        > >
        >
      • michael_j_barber
        After watching your screencast, I think it might be a good idea to extract out the core of the Compile and Run script, and see if we can t better isolate where
        Message 3 of 4 , Feb 4, 2008
        • 0 Attachment
          After watching your screencast, I think it might be a good idea to extract out the core of
          the Compile and Run script, and see if we can't better isolate where it goes wrong.
          However, even with that, it might not be feasible to get things working as you hope; I'll
          comment on that after sketching out the structure of what the Compile and Run
          AppleScript is doing.

          All that really happens is that two shell commands are constructed, and passed to the shell
          using "do shell script". Based on the paths in your screencast, the first shell command is:
          javac -encoding UTF8 '/Users/peterj/classJava1/dakeDavid/prjDataType/DebugMe.java
          That would be run, in effect, from the root directory.

          The second shell command is:
          cd "/Users/peterj/classJava1/dakeDavid/prjDataType/" && java 'DebugMe'
          Again, it would be run from root, but it of course makes no difference in this case.

          Those might well be enough for you to see where the error comes from. If not, you could
          try each of those from the Terminal (remembering to "cd /" before each). If it still works,
          then it must be a difference between the shell environment and the environment provided
          by "do shell script". To experiment with that, pulling the core of the AppleScript into a
          separate AppleScript is useful, since then we can run it from Script Editor and put up alerts
          after each of the shell commands. Here's an appropriate AppleScript (more discussion
          follows):

          -- begin script
          -- file path components
          set parentPath to "/Users/peterj/classJava1/dakeDavid/prjDataType/"
          set fileName to "DebugMe.java"
          set javaAppName to "DebugMe"

          -- reconstruct the file path that SubEthaEdit would normally provide
          set filepath to parentPath & fileName

          -- build compile and run strings
          set javacString to "javac -encoding UTF8 " & quoted form of filepath
          set execJavaString to "cd \"" & parentPath & "\" && " & "java " & quoted form of
          javaAppName

          -- compile and show result
          set compileResult to do shell script javacString
          display alert "Compile succeeded" message ("Shell script: " & return & javacString & return
          & return & "Returned:" & return & compileResult)

          -- run and show result
          set runResult to do shell script execJavaString
          display alert "Run succeeded" message ("Shell script: " & return & execJavaString & return &
          return & "Returned:" & return & runResult)

          -- end of script

          With that, it should be feasible to experiment and identify where the problem occurs.
          Unfortunately, I'm not sure that Compile and Run is going to do what you want, even with
          changes. From the screencast, the DebugMe program seems to depend on interaction with
          the user. I don't think that's possible with "do shell script".

          All is not lost, however! There is another approach, which might be suitable. The Terminal
          is scriptable, and has a "do script" action. You could just construct a string containing a
          shell command along the lines of:
          cd "/Users/peterj/classJava1/dakeDavid/prjDataType/" && javac -encoding UTF8
          'DebugMe.java && java 'DebugMe'
          All that could be wrapped up in a new shell script, and added to a local Java mode for your
          class.

          At this point, I'm not sure what else to suggest. I'm willing to help further, if I can, but will
          need some more information.

          --- In SubEthaEdit@yahoogroups.com, "petermankato" <peter.johnson@...> wrote:
          >
          > Michael,
          > Thanks for the details. The problem seems to be when Java is called to
          > run the compiled program. I did a quick video (using Jing) to show
          > what happens: http://screencast.com/t/BJh2c1cSu
          >
          > I know that this is not good form, using a class directly
          > (Keyboard.readDouble( )) but this is the second program my students
          > write for Java I and I build off of this experience as the semester
          > unfolds.
          >
          > Thanks for your help in figuring out how to change the script so I can
          > use the Compile and Run button.
          >
          > Peter
          >
          > --- In SubEthaEdit@yahoogroups.com, "michael_j_barber"
          > <michael_j_barber@> wrote:
          > >
          > > I've taken a look at the Java mode scripts, and I think I know what
          > the problem is.
          > > However, I don't really do any Java programming, so I can't be
          > completely certain. I can tell
          > > you what to try in order to get things clear, though, and then maybe
          > a solution will
          > > become apparent.
          > >
          > > Here's my thinking. You're seeing an error at compile time, not at
          > run time. The "Compile"
          > > and "Compile and run" scripts do not call the compiler in the same
          > way. Both use "do shell
          > > script" to call out to the shell, but not using the same command
          > string.
          > >
          > > "Compile" switches to the directory containing the front SEE
          > document, which is your
          > > main(). It then compiles the document using javac. You don't really
          > say, but I'm guessing
          > > that "Compile" works OK?
          > >
          > > "Compile and run" doesn't work that way. It just calls javac to do
          > the compilation. That's
          > > equivalent to something like:
          > > # cd /
          > > # javac -encoding UTF8 path/to/your/mainfile.java
          > > Would that give the error you're seeing from "Compile and run"?
          > >
          > >
          > > --- In SubEthaEdit@yahoogroups.com, "Peter K. Johnson"
          > <peter.johnson@> wrote:
          > > >
          > > > When I use the Compile and Run button on the menu bar SubEthaEdit
          > compiles
          > > > my classes okay but gives me an error that it can¹t find a class
          > that is
          > > > external to the class containing my main( ). Both the class with
          > main( ) and
          > > > the class that is called from main( ) are in the same folder.
          > > >
          > > > If I go into Terminal window and run the program from the command
          > prompt it
          > > > works perfectly so I know my code is correct. (It¹s also a very
          > simple test
          > > > program.)
          > > >
          > > > Is there a script or setting that I can change to get the Compile
          > and Run
          > > > button to work properly?
          > > >
          > > > Peter Johnson
          > > >
          > >
          >
        Your message has been successfully submitted and would be delivered to recipients shortly.