Compiling application (with several sub-packages) from another java app

Hi,
I'm writing my own build tool and need to be able to compile an external application (pulled from cvs, subversion, ...) from within this build tool.
Probably I need to use com.sun.tools.javac.Main.compile ?
But how do I pass classpath, output dir, etc to this class and how can I make it compile all files in all (sub)packages of the given folder ?
thanks for any help.

Never mind my previous post, I found a solution to the "the input line is too long" problem:
Putting all the files in a temporary file and then providing that file as the source to compile, like this:
javac -g:none -cp <classpath> -d classes @sourcefiles.txtwhere sourcefiles.txt is the name of the temporary file that contains the names of the source files (note the "@"-prefix)
For some reason, this is not mentioned/documented in the java docs (at least not in my docs)
Ok, so everything is compiling now, but I have one problem remaining:
For each "module" that I compile (the application I use for my tests consists of several "modules", i.e. subpackages), I get an error stating that "The system cannot find the path specified"
This seems obvious, because it is trying to write a file <package-name>\classes\<package-name>\<classname>.class
But why is it trying to write that file ?
-> Is this a known bug or something ?
Let me explain a little more...
For each compilation I do using the com.sun.tools.javac.Main.compile() method, it is giving this error.
Everything is compiling correctly, but it seems it is trying to write an extra class file to a wrong path.
Until now, it was always the first file in the row that gave the problem.
Example:
** module 1:
sources/com/example/module1/class1.java
sources/com/example/module1/class2.java
sources/com/example/module1/class3.java
sources/com/example/module1/sub1/subclass1.java
sources/com/example/module1/sub1/subclass2.java
sources/com/example/module1/sub1/subclass3.java
** module 2:
sources/com/example/module2/class1.java
sources/com/example/module2/class2.java
sources/com/example/module2/class3.java
sources/com/example/module2/sub1/subclass1.java
sources/com/example/module2/sub1/subclass2.java
sources/com/example/module2/sub1/subclass3.java
=> My application will compile module 1, do some other things with it and the module 2 and again do some other things with it.
The result would be:
Application started.
Loading configuration: OK
Compiling sources for module module1: E:\temp\_User_\project\packaging\workingdir\source\com/example/module1\class1.java:12: error while writing com.example.module1.class1: com\example\module1\classes\com\example\module1\class1.class (The system cannot find the path specified)public class class1 extends Thread {
       ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -deprecation for details.
1 error
OK
Note: Contents of my classes directory for module1:
classes/com/example/module1/class1.class
classes/com/example/module1/class2.class
classes/com/example/module1/class3.class
classes/com/example/module1/sub1/subclass1.class
classes/com/example/module1/sub1/subclass2.class
classes/com/example/module1/sub1/subclass3.class
=> all class files are correctly compiled
Compiling sources for module module2: E:\temp\_User_\project\packaging\workingdir\source\com/example/module2\class1.java:12: error while writing com.example.module2.class1: com\example\module2\classes\com\example\module2\class1.class (The system cannot find the path specified)public class class1 extends Thread {
       ^
Note: Some input files use or override a deprecated API.
Note: Recompile with -deprecation for details.
1 error
OK
Application finished without errors.
Note: Contents of my classes directory for module2:
classes/com/example/module2/class1.class
classes/com/example/module2/class2.class
classes/com/example/module2/class3.class
classes/com/example/module2/sub1/subclass1.class
classes/com/example/module2/sub1/subclass2.class
classes/com/example/module2/sub1/subclass3.class
So, as you can see everything compiles as expected, but an error message is displayed related to each first file that is compiled.
==> Is this a known issue ?
==> What can I do about it ?
Suggestions welcome

Similar Messages

  • How to compile and run a .java file from another java program

    hello,
    can any one tell me how to compile and run a *.java* file from another java program which is not in same directory?

    Well a smarter way of implementing this is by using a solution provided by Java Itself.
    If you are using J2SE 6.0+ there is an in built solution provided along with JDK itself and inorder to go ahead with solution the below are set of API which you;d be using it for compiling Java Programs (Files)
    http://java.sun.com/javase/6/docs/api/javax/tools/package-summary.html
    How do i do that ??
    Check out the below articles which would help you of how to do that
    http://www.ibm.com/developerworks/java/library/j-jcomp/index.html
    http://www.javabeat.net/javabeat/java6/articles/java_6_0_compiler_api_1.php
    http://books.google.com/books?id=WVbpv8SQpkEC&pg=PA155&lpg=PA155&dq=%22javax+tools%22+compiling+java+file&source=web&ots=XOt0siYe-f&sig=HH27ovuwvJgklIf8omTykUmy-eM
    Now once we are done with compilation.In order to run a Specific class all you ought to do is create an object and its specific methods of a specified class included in the CLASSPATH which you can manage it easily by usage little bit reflections.
    Hope that might help :)
    REGARDS,
    RaHuL

  • I am feeling so ripped off right now. I have wanted a Mac for years and believed the hype about it's stability and I have had more trouble with this Imac 2011 than I have ever had with a pc. It locks up with several software products from APP store.

    I am feeling so ripped off right now. I have wanted a Mac for years and believed the hype about it's stability and I have had more trouble with this Imac 2011 than I have ever had with a pc. It locks up with several software products from APP store. I have already had to have a technician to look at it and really couldn't figure out what the deal was.  I was told that the APP store software should give me no problems but the truth is that it locks up on the software. This machine is only 4 weeks old and I am using 37 g on a 1 T hard drive. There is no reason for it to be locking up. Also, when I try to use the help program, it always tells me that I am not connected to the internet even though I have used both the mail program and the browser with no problem just before that. I successfully used the help program on my pc lots of times. I did not need a $2000. plus machine to just get email. I just wanted to unload on somebody that might understand my pain and after checking out this site...I think there is a few of you out there.

    I was told that the APP store software should give me no problems but the truth is that it locks up on the software.
    The apps downloaded from the Mac App Store are written by third party developers, not Apple. If you have problems  with those apps you need to visit the support area for their websites. Launch the App Store, locate the app name. You should see a support link.
    when I try to use the help program, it always tells me that I am not connected to the internet even though I have used both the mail program and the browser with no problem just before that
    Go to ~/Library/Preferences. Move the com.apple.helpviewer.plist file from the Preferences folder to the Trash. Restart your Mac, try the Help menu.
    If you need help finding that file, hold down the Finder icon in the Dock then click: New Finder Window. From the menu bar top of your screen click: Go > Go to Folder. Type this in exactly as you see it here:   ~/Library/Preferences/com.apple.helpviewer.plist    That will take you right to that file.
    (.plist) files stores information about a particular app or in this case, the Help viewer. Often times deleting the .plist file resolves the issue.
    It's fine to "unload"... we understand that you expect your iMac to be stable but there are times when things go awry. That's why we have these forums so that you can you get help.
    You may want to read up on how to repair the disk if necessary or reintsall Lion >  OS X Lion: About Lion Recovery
    Apple - Find Out How - Mac Basics
    How to "switch" from PC to Mac >  Apple - Support - Switch 101
    I'm sorry you feel, "ripped off", but you are using the world's most advanced operating system and it may take some time to adjust to a new OS.   http://developer.apple.com/technologies/mac/

  • Trying to compile a .java file from another .java file

    Hello,
    I'm trying to compile a .java file from another .java file using Runtime.exec...
    String c[]=new String[3];
    c[0]="cmd.exe"; c[1]="/c" ; c[2]="javac Hello.java";
    Process p=Runtime.exec(c);
    If anyone can help me in atleast getting the command prompt when Runtime.exec("cmd.exe") is executed...that would be great...I tried out notepad.exe, calc, explorer instead of cmd.exe...all the commands display their respective windows..except cmd.exe...the command prompt doesnt appear...
    Please help me ASAP....
    Thanks for your help in advance...
    Regards.
    AKhila.

    try this. ur code will be compliled and will get .class file. but console won't appear. is it a must for u?
    public class Exec{
         public static void main(String a[]) throws Exception{
              String c[]=new String[3];
              c[0]="cmd.exe"; c[1]="/c" ; c[2]="javac Hello.java";
              Process p=Runtime.getRuntime().exec(c);
              // or Runtime.getRuntime().exec("javac Hello.java");

  • I spend 5 months in Florida and 7 months in Ontario, Canada. Can a Verizon Samsung Note ll be unlocked and used with a sim card from another carrier in Ontario?

    I spend 5 months in Florida and 7 months in Ontario, Canada. Can a Verizon Samsung Note ll be unlocked and used with a sim card from another carrier in Ontario?

    Yes, you should be able to use a local SIM card from a carrier in Ontario. You should not have to do anything prior to doing so.

  • Can we call an ODI package from another ODI package within same Project?

    hi All,
    Can we call an ODI package from another ODI package within same Project?

    What you can do is get all the interfaces on the old package that you want to be included in the new package. This way, the new package will have the exact code from the old package.Or generate a scenario out of your ("old") package and drag&drop the scenario in the "new" package.
    That seems easier to me, because you can re-use the scenario as often as you want.
    But you have to take care: If you change your original ("old") package, you have to regenerate the scenario, otherwise the changes do not affect the scenario.
    Edited by: h_elmu_t on 02.07.2009 08:50

  • Calling package from another package

    Hi gurus,
    Quick question
    Say i m in user1 schema.
    I want to call package from another package in the same schema. So do i need to grant permission to the calling package to call.Thank you!!

    Why don't you test it?
    create or replace package pack2
    is
      procedure t2;
    end;
    Package created.
    create or replace package body pack2
    is
      procedure t2
      is
      begin
       dbms_output.put_line('Inside Pack2 And t2');
      end;
    end;
    Package Body created.
    create or replace package pack1
    is
      procedure t1;
    end;
    Package created.
    create or replace package body pack1
    is
      procedure t1
      is
      begin
        pack2.t2;
        dbms_output.put_line('Inside Pack1 And t1');
      end;
    end;
    Package Body created.
    begin
    pack1.t1;
    end;
    Inside Pack2 And t2
    Inside Pack1 And t1
    Statement processed.
    0.11 secondsRegards.
    Satyaki De

  • Please help with executing a java program from another java program

    Hi, I have tried to execute a very simple java program which is printed out "Hello world" from another java gui program when the user click on the "START" button. However, I don't receive any print out on the terminal when they click it. These two programs are being developed in Unix environment. Here is the code that I am trying to use.
    Runtime r = Runtime.getRuntime();
    r.exec("java HelloWorld");
    p.s. HelloWorld is java class of the HelloWorld.java

    I think you have to luanch your MS Prompt first before executing the command.

  • How to call a Java class from another java class ??

    Hi ..... can somebody plz tell me
    How to call a Java Class from another Java Class assuming both in the same Package??
    I want to call the entire Java Class  (not any specific method only........I want all the functionalities of that class)
    Please provide me some slotuions!!
    Waiting for some fast replies!!
    Regards
    Smita Mohanty

    Hi Smita,
    you just need to create an object of that class,thats it. Then you will be able to execute each and every method.
    e.g.
    you have developed A.java and B.java, both are in same package.
    in implementaion of B.java
    class B
                A obj = new A();
                 //to access A's methods
                 A.method();
                // to access A's variable
                //either
               A.variable= value.
               //or
               A.setvariable() or A.getvariable()

  • Starting New process (continous) from another java process

    Hi,
    I am running into a trouble in starting a new java process (continous process it is like daemon process ) from another java process.
    Eg;
    Caller.java runs on one JVM instance, from this Caller.java i need to start a daemon java process ConnectionManager.java (My caller.java should have to know whether ConnectionManager was successfully started as a seperate java process or not)
    Also Caller.java has to stop ConnectionManager.java(which is running as seperate process)
    Any help would be appeciated.
    Thank you very much.

    First of all the design is unusual. Your issue is basically intercommunication between two processes written in java. There are various ways to do that:
    1. Use Persistent system(File/Database) : Easiest but have external dependency.
    2. Use RPC calls both JVM,s little bit complex.
    3. Run new JVM in debug mode and connect on bootstrap port.
    4. Communicate using Sockets.
    Whatever suits you...

  • How to interact with a COM component from a Java class

    Hi, could someone give a hint on what API I should explore in order to interact with a COM component from a Java class?
    Thanks in advance
    Luis

    jacob sounds nice...http://danadler.com/jacob/

  • Opening a document from a Java app

    I need to open a document from my Java app. It is a .rtf file and I would like it to open with the system associated application for rtf files. How should I do that?
    I have tried to figure out the Runtime.exec(), but it doesn't do what I need. I have been able to open Notepad or WordPad (oh, yes, I am on a Win XT system) by specifying them in the exec function, but I can't find info on how to let the system choose the program.
    Thanks for your help.
    Wayne

    Take a look at the JDIC project
    https://jdic.dev.java.net/
    In particular the org.jdesktop.jdic.filetypes.AssociationService class
    https://jdic.dev.java.net/nonav/documentation/javadoc/0.9/index.html

  • Deploying application with several web modules having the same context root

    Hi,
    I would like to be able to deploy an application in Weblogic 12c having one ejb module and several web modules with the same context root. Even though the web modules have the same context root, each of them is deployed to a different virtual host.
    Weblogic allows deploying the modules this way as long as their targets are different (i.e. each having a distinct virtual host). However this works only when I don't select a target for the .ear:
    Component Type Current Targets
    application.ear Enterprise Application (None specified)
    application.jar EJB AdminServer
    web1.war WEBAPP virtualHost1
    web2.war WEBAPP virtualHost2
    However if I select as target for the .ear to be AdminServer, the deployment doesn't work anymore, complaining that the context roots are in conflict.
    If I remove web2.war from the .ear and deploy the .ear and .jar to AdminServer and web1.war to virtualHost1, the deployment works but the strange thing is that the web application can be accessed also through the AdminServer's main network channel, even though I would expect that it should be accessible only through virtualHost1 network channel. I believe this is the reason why there are context root conflicts when specifying a target for the .ear, because both wars are made accessible to the main network channel.
    The reason why I want to keep the wars inside the same .ear is because I want to make them access the application's local EJBs (since as far as I know it's not possible to access a local EJB outside the application even if they belong to the same VM).
    Is there a way to deploy the web modules only to the virtual hosts without being targeted to the main network channel?
    Regards,
    Alexandru

    Murphy's Law: If anything can go wrong it will
    A corollary to Murphy's law: When everything fails, read the manual.
    Web application funda: Every web application must have its own context root. So, if wkfsocos is one
    web application then, wkfsocos1 is another web application -
    and hence must have its own context root.
    Hello Aman,
    If you are in E-Commerce version 4.0, then read this
    [ISA_Buildtool document |https://service.sap.com/~sapdownload/011000358700001920472003E/ISA_BuildTool_10.pdf]
    to create a copy of the application in its own context root.
    From your URL pattern I guess you are in E-Commerce version 4.0.
    If you are in E-Commerce 5.0 or above, then the
    [Extension Guide |http://service.sap.com/~sapdownload/011000358700006120622006E/]gives steps to create a copy with its own context root for use in modification.
    (See the chapter on - Creating a project specific Web Application with own context root )
    Both these links require access to SAP Service Marketplace. You can also find the
    documents through /instguides shortcut in Service Marketplace.
    Easwar Ram
    http://www.parxlns.com

  • How to call a Java Web Service from another Java package ?

    Please, does anybody know a simple way to access to a JWSDP Web Service deployed under Tomcat with another java application ?
    I've tried with ServiceFactory and Service class from JaxRPC API but it doesn't work ....
    Thanx.

    What not just invoke it the same you would invoke a remote service? Create a service stub and call a service method.
    Mike

  • Calling BPM Sub Process from another BPM Process - Stuck at Sub Process

    Hi
    JDeveloper 11.1.1.6, BPM 11.1.1.6, WLS 10.3.6
    I am trying to Call a BPM Process from another BPM Process. Both the processes are defined in the same BPM Project.
    Both the Processes have 'None' Start and End activities.
    The 'Parent Process' has a 'Call Activity' which calls the 'Sub Process'.
    The Sub process takes a parameter of payload object as input and returns output (also same payload object)
    I have passed the payload object from parent to sub process in the 'Data Associations'.
    The Start and End activities in the sub process also have the data associations set where I am passing the payload object from parent process to child process.
    When I run the process and see the Enterprise Manager console - Audit Trail / Flow tabs,
    Flow Tab - The progress of the process is showing only till the Calling of the sub process in the Parent Process. It does not show the Sub Process.
    Audit Trail Tab - Shows that the Sub Process is called but has not reached to the End of the Sub process.
    The audit trail does not have links to the sub process activities.
    I cannot see any exceptions as well in the audit trail.
    How can I find out why the process is stuck? Or what is going on in the process?
    Please let me know if my explanation is not clear?
    Thanks for any help
    Regards
    Sameer

    Thanks for replying.
    I have another Sub Process with Start and End events as Message Events and used Send Task and Receive Task (Implementation : Process Call) in the Main process to invoke the sub process asynchronously.
    Then, the Sub Process is shown in the 'Flow Trace' as child of the main process.
    In this particular one, I used 'Call Activity' to call the sub process.
    So the Audit trail is showing the sub process as a child.
    But what I was trying to say is that the audit trail did not have links to the entries in the 'Event' column (in Enterprice manager - instance window). (like Instance entered activity, Instance left activity etc).
    I was intending to use these links to see the payload information and try to debug if there is any problem with the code.
    The actual problem I was trying to say in the post is that, even after the user responds to the activity (User Task - Approval) in the Sub process,
    the audit trail is not proceeding further.
    In the Sub process definition, after the user task, there is End with none implementation.
    Hope it is clear now.
    Thanks and Regards
    Sameer

Maybe you are looking for

  • Should I overprint to avoid white space between colors when printing?

    Hello all,              I hope I don't get slammed for posting the wrong way! But I'll try. I print on a Summa DC4 thermal printer which prints one color at a time. I am using Illy CS4 with a cmyk document, all vectors. My Question is: Should I overp

  • Using SQL Objects in PLSQL

    Please help to resolve this. Getting the below error while executing the function [Error] ORA-00947 (7: 17): PL/SQL: ORA-00947: not enough values CREATE OR REPLACE TYPE TY_1 AS OBJECT FN VARCHAR2(100), SL NUMBER, HD DATE CREATE OR REPLACE FUNCTION  F

  • Fm for al11

    Hi experts, I want a function module in which by passing NAME OF THE DIRECTORY PARAMETER, i will get the directory path. Please help me..

  • Send whole BDOC more then once ?

    Hi, when I create the bdoc for BP it has whole info inside when I do a change inside a BP I can only see a delta (just like delta with master data IDOCs from ERP) is there a way to send a whole bdoc everytime something changes in standard ? or do I n

  • Assembly processing

    Hi All I am doing assembly processing for project with varient configeration When I create and save sales order for a material taking quantity as 1 a project is being generated for SO with quantity 1 for a material when I put quantity more than one i