Discussions
Categories
- 385.5K All Categories
- 5.1K Data
- 2.5K Big Data Appliance
- 2.5K Data Science
- 453.4K Databases
- 223.2K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 47 Multilingual Engine
- 606 MySQL Community Space
- 486 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.2K ORDS, SODA & JSON in the Database
- 585 SQLcl
- 4K SQL Developer Data Modeler
- 188K SQL & PL/SQL
- 21.5K SQL Developer
- 46 Data Integration
- 46 GoldenGate
- 298.4K Development
- 4 Application Development
- 20 Developer Projects
- 166 Programming Languages
- 295K Development Tools
- 150 DevOps
- 3.1K QA/Testing
- 646.7K Java
- 37 Java Learning Subscription
- 37.1K Database Connectivity
- 201 Java Community Process
- 108 Java 25
- 22.2K Java APIs
- 138.3K Java Development Tools
- 165.4K Java EE (Java Enterprise Edition)
- 22 Java Essentials
- 176 Java 8 Questions
- 86K Java Programming
- 82 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 208 Java User Groups
- 25 JavaScript - Nashorn
- Programs
- 667 LiveLabs
- 41 Workshops
- 10.3K Software
- 6.7K Berkeley DB Family
- 3.6K JHeadstart
- 6K Other Languages
- 2.3K Chinese
- 207 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 474 Portuguese
Can you write simple Java code in a UNIX function and run it? See example....

Hi,
I'm new to Java and I have a question.
Is there any possible way a simple script like the below would work in a UNIX function called from a shell script. I know you're not supposed to do this but can you?
Thanks in advance,
...
javatst() { $JAVA_HOME/bin/java <<- _java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } _java } javatst ...
Answers
-
MOD: moved from JDBC
-
Could you elaborate please?
-
No.
Java is no scripting language.
You need to translate the java source code to the intermediate language which is in turn interpreted by the Java Virtual Machine (JVM) at execution time.
The java compiler which does the translation from source code to IL code works with files in your file system. You cannot pass in a stream to be compiled. (at leest the existing implementations I know of).
So your shell script must write the code into a *.java file (with the exact same name as the class), pass that file to the javac executable and after that it could run the JVM (the java executable) with the resulting *.class file as parameter.
Step 1 and 2 are better done within a Java IDE.
bye
TPD
-
When I took java 15 years ago, I could have sworn I saw our instructor execute a java command from the command line where he did the compile and the run at the same time with the main(String[] argv) method and a println enclosed in brackets. I think it was a hypothetical example to show that you could do it at the command liline because he was trying to use a visual example to show us parts of the main(String[] argv) statement.
Would you or anyone know about doing that?
-
I didn't attent that class but it's quite easy to create a shell script that does the three steps in sequence.
But again, Java is no scripting language.
If you want a scripting language with Java syntax you should have a look at Groovie but on the other hand the java syntax is quite hard to handle in scripting environments. It's a bit too chatty...
bye
TPD
-
You can run a java class from a shell script like below:
#!/bin/sh
<span class="kwd" style="color: #00008b;">exec</span><span class="pln" style="color: #000000;"> </span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">usr</span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">bin</span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">java </span>
-DsysParam1="var1_val" -DsysParam2="var2_val" -cp jar1:jar2:jar3 /home/unixUserName/javaClasses/Test.javaexit 0
-
2894431 wrote: You can run a java class from a shell script like below: #!/bin/sh
<span class="kwd" style="color: #00008b;">exec</span><span class="pln" style="color: #000000;"> </span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">usr</span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">bin</span><span class="pun" style="color: #000000;">/</span><span class="pln" style="color: #000000;">java </span>
-DsysParam1="var1_val" -DsysParam2="var2_val" -cp jar1:jar2:jar3 /home/unixUserName/javaClasses/Test.java exit 0No!
This is neither a valid answer to the OPs question (since your script does not create the content of Test.java) nor working.
The java executable can only run *.class files which contain byte code of the intermediate language generated by the javac executable.
Your suggestion leads to a ClassNotFound exception.
bye
TPD
-
> When I took java 15 years ago, I could have sworn I saw our instructor execute a java command from the command line
Could be that the teacher wrote their own shell environment.
Or that you mistook an IDE for a shell.
Or, I believe at one time, there was an environment that did java scripting (there was one for C or C++ too) and perhaps that was it.