2 class in 1 file ?

How can I get classes names from a java file. like
A.java
public class B {
class C {
java ClassChecker A.java
B
Cthank u.

As BIJ001 mentioned, if you actually compile A.java you'll end up with an A.class and a B.class.
If you really want some program you can run which analyzes the source file... well, you need a program which analyzes the source file. This is actually a pretty complicated problem.
If you're looking for simple solutions, you might try running the java compiler and seeing what comes out. That's kind of hackish though. What you really want is some sort of customized Java parser. Use something like ANTLR (http://www.antlr.org/) to generate a language recognizer that parses the .java file and extract the names of all the classes within.
This is actually easier than it first sounds. There are several grammar files available on ATNLR's website for the Java language. If we pick one like this:
http://www.antlr.org/grammar/1090713067533/index.html
then make some minor modifications to the ClassDefinition clause to print out the class's identifier as we parse the class:
// Definition of a Java class
classDefinition![AST modifiers]
     :     "class" id:IDENT  {System.out.println(id.getText());}
          // it _might_ have type paramaters
          (tp:typeParameters)?
          // it _might_ have a superclass...
          sc:superClassClause
          // it might implement some interfaces...
          ic:implementsClause
          // now parse the body of the class
          cb:classBlock
          {#classDefinition = #(#[CLASS_DEF,"CLASS_DEF"],
                                        modifiers,id,tp,sc,ic,cb);}
     ;then we just need to run the grammar file through ANTLR and we have exactly what you're looking for. (This is also actually a little hackish; purists would tell you to build an abstract syntax tree and then walk the syntax tree looking for class definitions. That would be a more flexible solution, depending on what you intend to do.)
Here; here's a netbeans project that does it all:
http://www.thedreaming.org/~quartz/JavaParser.zip
To recompile, install ANTLR (I was using 2.7.5), then go to the "antlr" directory in that zip file and edit and run "rebuild.cmd" to rebuild the grammar files. Then, load the project into netbeans, add the antlr library, and run. Or, if you just want to try it out, go to the dist directory and run:
java -jar JavaParser.jar ..\src\A.java
Hope that helps!

Similar Messages

  • Class name and file name should be same??

    Hi All,
    I am having tweo public classes in a file like this:
    public class A
    // Class body
    public class B extends A
    // Class body
    public static void main(String args[])
    // Function body
    when I compile its giving the following error:
    B.java:1: class A is public, should be declared in a file named A.java
    Why it is so.whats wrong in this.
    Thanks in advance,
    Jana.

    In C you have to write a "make-file" for your project (or it's written for you).
    In java there are no "projects". If the JVM needs a class it is looking for a file with this name in the classpath.

  • How to convert the javasource file(*.class) to execute file(*.exe)?

    How to convert the javasource file(*.class) to execute file(*.exe)?
    thank you!

    Although i have seen a few programs (that are platform specific) that will embed a small jvm into an exe with your class file, it is generally excepted that you cannot create an executable file using java. The JAR executable file is probably the closest your going to get
    Pete

  • How to create custom attributes & object classes through ldif files in OID

    Hi,
    I have to create 4 attributes and one object class(custom) in OID. I want to creae these attributes and object class through LDIF file.
    I tried creating an attribute through this command
    ldapadd -p 389 -h localhost -D cn=orcladmin -w password -f D:/newattr.ldif
    this ldif file contains inf. for creating a new attributes:
    dn: cn=subschemasubentry
    changetype: add
    add: attributetypes
    attributetypes: ( 1.2.3.4.5.6.10 NAME "xsUserType_new" DESC "User Type Definition" EQUALITY caseIgnoreMatch
    SYNTAX "1.3.6.1.4.1.1466.115.121.1.15" )
    I am getting error: Object class violation
    Failed to find add in mandatory or optional attribute list.
    Please help to find where I am going wrong...
    Thanks.

    Hi Ajay,
    Thank you for the help. Now i am able to create both attributes and object classes in OID through Ldif files.
    I was getting constraint violation error because (I think) I was not giving proper naming convection for attributes and object classes. For OID, there are certain Ldap naming conventions. They are as follows:
    # X below is the enterprise number assigned by IANA
    1.3.6.1.4.1.X.1 - assign to SNMP objects
    1.3.6.1.4.1.X.2 - assign to LDAP objects
    1.3.6.1.4.1.X.2.1 - assign to LDAP syntaxes
    1.3.6.1.4.1.X.2.2 - assign to LDAP matchingrules
    1.3.6.1.4.1.X.2.3 - assign to LDAP attributes
    1.3.6.1.4.1.X.2.4 - assign to LDAP objectclasses
    1.3.6.1.4.1.X.2.5 - assign to LDAP supported features
    1.3.6.1.4.1.X.2.9 - assign to LDAP protocol mechanisms
    1.3.6.1.4.1.X.2.10 - assign to LDAP controls
    1.3.6.1.4.1.X.2.11 - assign to LDAP extended operations
    By using these conventions for attributes and object class, I did got any error and they were created in OID.
    Thanks a zillion.
    Kalpana.

  • How can I split a class into 2 files?

    I converted a C++ program to Java recently and it works fine, but I ran into a problem.
    One file is very large and I need to add more functionality. Unlike with C++ where you can just put new functions in another file, I don't see a way to do it in Java.
    I made another file, and therefore another class, but the compiler complains that it can't call a static function from non-static context. (I did not declare it static so I guess it's assuming it) But I understand why. So I made the new class "extend" the old one so "this" would exist but that doesn't work -- Is it because the new class is a subclass of the original class?
    There must be a way to do this. But I don't see what is likely obvious. HELP! And thanks.

    JavaIsBetterThanCPP wrote:
    There must be a way to do this. But I don't see what is likely obvious. HELP! And thanks.Unfortunately Java has no concept of "partial classes" like C# has. Generally, however, a class that is large enough to split up into separate files is either one class that should be modularized further into separate classes, or it already is modularized and all that code is the result of many inner classes. What some people do is promote those inner classes to top-level members in their own file, and mark them as package-private. Using a package you can basically have two classes that know everything about each other and have full access to each other.
    But personally, and until I see justification otherwise, semantics in Java being unbreakingly tied to a certain file structure and naming is the most bonehead and, frankly, non-Java thing about Java.
    There's probably a pre-processor out there that will let you split a class into multiple files and will combine them into a single source file just-in-time to pass to the compiler.

  • Having problems in creating a class with name File.

    I want to compile a new class with class name as File, i have made it part of a new package also but still i am getting this error
    "File.java:2: CustomFile.File is already defined in this compilation unit
    import java.io.File;
    ^
    File.java:6: cannot resolve symbol
    symbol : constructor File ()
    location: class java.io.File
    inFile = new java.io.File();
    ^
    2 errors"
    Here is the source code of the file:
    package CustomFile;
    import java.io.File;
    public class File {
    private java.io.File inFile;
    public File(){
         inFile = new java.io.File();
         System.out.println("hi file");
    }

    Any help is appreciated.
    I want to compile a new class with class name as File,
    i have made it part of a new package also but still i
    am getting this error
    "File.java:2: CustomFile.File is already defined in
    this compilation unit
    import java.io.File;
    ^
    File.java:6: cannot resolve symbol
    symbol : constructor File ()
    location: class java.io.File
    inFile = new java.io.File();
    ^
    2 errors"
    Here is the source code of the file:
    package CustomFile;
    import java.io.File;
    public class File {
    private java.io.File inFile;
    public File(){
         inFile = new java.io.File();
         System.out.println("hi file");

  • Mapping java classes to XML files

    Hi Friends !!
    Please I need your help.
    Does somebody out there know any framework or API that helps me to map Java classes to XML files.
    Something like:
    public class Test {
        public int x;
        public int y;
        public int sum(){}
    }to something like:
    <?xml version="1.0" encoding="UTF-8"?>
    <class>
    <className>Test</className>
    bla
    bla
    bla
    </class>
    Any tips?
    Thanks in advance
    Cleverson

    JAXB will create classes from an XML schema, SAX is a parser library and JAXP is a library of XML a bunch of XML tools.
    I don't care for JAXB too much. I would skip it and go right to the JAX-RPC spec (WebServices).

  • How to import .jar files in order to use the classes within this file

    hello guys,
    I'm just wondering how can i import .jar files in order to uses the classes within this file.
    let's take an example:
    i have a folder in which I have many .jar files which contain classes to be called. the full path of this folder is set in the Classpath inside the enviroment variables.
    so does anyone have any idea how can i import these .jar files so i can use the classes?
    thank you.

    Hi,
    My problem is that: I created a Serializable class in a project. And I added this project (first project) to another project (second project). First project is appearing in the second project' s Libraries folder. No problem. I want to create a jar file from second project. i.e. I want to Build second project (I use NetBeans IDE). I am using Build Main Project tab under Run. It is falling out. I am finding it second project' s jar file under its folder. I am clicking on it. But it is NOT WORKING. Do you know WHY. Could you help me please?
    Thanks,

  • Problem in saving entire class in a file

    I have a program which saves entire classes in a file:
    try
    FileInputStream tiedosto =
    new FileInputStream(fn);
    ObjectInputStream syote =
    new ObjectInputStream(tiedosto);
    l = (Lokidata)syote.readObject();
    syote.close();
    catch (Exception e)
    JOptionPane.showMessageDialog(this, "ei onnistu "+fn);
    System.err.println(e);
    this works fine until i change to different java runtime version. If I save in runtime version 6-5, I cannot read
    the class with runtime version 6-6. The same with runtime 6-3. These I have tested and it seems that I have to read with the same runtime version which I have used in saving.
    Can I overcome this somehow? How can i determine in NetBeans which jre NetBeans uses?
    Urpo Pietil&auml;
    [email protected]

    Thank you for good advice. After reading the article I decided to save my class as text file and convert it back to data after read the text.
    Netbeans did not warn about missing import although I had the class implemented as serializable.
    Urpo

  • [svn:osmf:] 16580: Converted classes and project files to work in flex 3.5

    Revision: 16580
    Revision: 16580
    Author:   [email protected]
    Date:     2010-06-16 17:08:07 -0700 (Wed, 16 Jun 2010)
    Log Message:
    Converted classes and project files to work in flex 3.5
    Modified Paths:
        osmf/branches/zeri-certification/Test_Apps/FlexUnit4/.actionScriptProperties
        osmf/branches/zeri-certification/Test_Apps/MediaTests/.actionScriptProperties
        osmf/branches/zeri-certification/Test_Apps/MediaTests/html-template/history/history.js
        osmf/branches/zeri-certification/Test_Apps/MediaTests/html-template/index.template.html
        osmf/branches/zeri-certification/Test_Apps/MediaTests/src/InstructionsForm.mxml
        osmf/branches/zeri-certification/Test_Apps/MediaTests/src/MediaTests.mxml
        osmf/branches/zeri-certification/Test_Apps/MediaTests/src/ZeriTests.mxml
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/.actionScriptProperties
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/html-template/history/histo ry.js
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/html-template/index.templat e.html
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/src/Zeri_Custom_Player.mxml
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/src/comps/LogBuffer.mxml
    Added Paths:
        osmf/branches/zeri-certification/Test_Apps/MediaTests/html-template/AC_OETags.js
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/html-template/AC_OETags.js
    Removed Paths:
        osmf/branches/zeri-certification/Test_Apps/MediaTests/html-template/swfobject.js
        osmf/branches/zeri-certification/Test_Apps/Zeri_Custom_Player/html-template/swfobject.js

    Hi for anyone getting similar issues,
    the solution is described in http://forums.adobe.com/message/3302944#3302944
    This is not a bug.
    Arnoud

  • Getting intermedia classes in jsp file

    Hi,
    I am using oracle intermedia classes in jsp file.I am importing the package 'oracle.ord.im' , and when running it is telling that the package is not available.
    I installed intermedia with oracle 10g, and i am using tomcat server,i don't know why it is saying that package is not availabe.
    can any one tell me how to access that package in a jsp file

    See my reply to your duplicate query

  • Can I increase heap memory without specify any class or jar file??

    Hi,
    I tried to increase my heap memory in this way :
    java -Xms256m -Xmx256m
    but I got an error ... it's seem that I must specify a class java or a .jar file ...
    This is the error :
    Usage: java [-options] class [args...]
    (to execute a class)
    or java [-options] -jar jarfile [args...]
    (to execute a jar file)
    where options include:
    -client to select the "client" VM
    -server to select the "server" VM
    -hotspot is a synonym for the "client" VM [deprecated]
    The default VM is client.
    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
    A ; separated list of directories, JAR archives,
    and ZIP archives to search for class files.
    -D<name>=<value>
    set a system property
    -verbose[:class|gc|jni]
    enable verbose output
    -version print product version and exit
    -version:<value>
    require the specified version to run
    -showversion print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
    include/exclude user private JREs in the version search
    -? -help print this help message
    -X print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
    enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
    disable assertions
    -esa | -enablesystemassertions
    enable system assertions
    -dsa | -disablesystemassertions
    disable system assertions
    -agentlib:<libname>[=<options>]
    load native agent library <libname>, e.g. -agentlib:hprof
    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
    load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
    load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
    show splash screen with specified image
    can I increase heap memory without specify any class or jar file??
    thx

    chiara wrote:
    Hi,
    I tried to increase my heap memory in this way :
    java -Xms256m -Xmx256m
    but I got an error ... it's seem that I must specify a class java or a .jar file ...
    This is the error :
    Usage: java [-options] class [args...]
    (to execute a class)
    or java [-options] -jar jarfile [args...]
    (to execute a jar file)
    can I increase heap memory without specify any class or jar file??The job of java.exe is to execute java bytecode.
    What is it supposed to do with your request to use 256m of memory for heap
    when you are not giving it a class or a jar to run?

  • Where to put common classes and jar files

    hi,
    i want to put some classes and jar files in a common folder so that it can be accessed by other applications is there any way doing that.In tomcat server they have common and shared directories once any classes are into that folder they are being accessed easily ,but i am having problems with sun one .
    Regards
    Ameem Sami

    Did you find a solution for this? I'm having the same problem.
    Thanks,
    Tony

  • Why a public class name and file name same?

    All of us know that, a public class should be declared in a file which has the same name of that class. What is the underlying concept behind this..Can someone give a clear explanation?
    Thanx..
    Sandeep Joseph
    Paragon Solutions
    [email protected]

    Another issue, it was said that the file must be named
    after the class to find the class's code when
    compiling dependent classes. Doesn't this apply to
    non-public classes too (with the dependent class being
    located in the same package)?This applies to all top-level classes ...
    You can define multiple classes in one file though:
    class A {
    class B {
    }It's perfectly valid to have both classes defined in the same file (named A.java if A is the first class to be defined in that file).
    You will get a compiler warning as soon as you reference a non-top-level class from a class that is defined in another file, though.

  • Creating Private Inner Classes in Separate Files

    I sometimes find myself wanting to use private inner classes to do things, but then moving the classes to separate files and giving them package access just because I don't like having single large files.
    Is there a way to create private inner classes on a class but just save them in another file?
    Thanks,
    John

    For me, short file sizes usually make design structure
    more clear. This can make maintenance easier. It can
    also make browsing the code easier, even if you have a
    good editor or IDE. It is also less intimadating
    psychologically (for me, anyway) to work with a number
    of small files, each one with a distinct purpose, than
    it is to open up a monster, even if the monster does
    represent a coherent design unit in some sense. I
    think this psychological impact may be more important
    than most people give it credit for.The psychological impact is lessened if you use an IDE like VisualAge (where only one method at a time is generally displayed) or use the "Show Source Of Selected Element Only" option in Eclipse.
    It's one thing to say a method should be short and a class should have as few methods as possible. Those forces reduce complexity and ease maintenance. It's another to say a source file should be short. A source file is just a storage artifact; source code could be stored in a database without changing how the programmer interacts with it. The fact that the standard java compiler requires the implementation of nested classes to be stored inside the source file of their containing class is a minor inconvenience. Don't let it discourage you from using inner classes when they make sense. The design should not be driven by source file size considerations.
    >
    But you have added code only with the sole intent of
    making a source file smaller. If Java had amechanism
    for storing nested classes in other files youwouldn't
    do this. My point below was that you shouldn't let
    source file size override the decision to use anested
    class.Why shouldn't I let it? There are plenty of
    non-trivial benefits (the ones I gave above, for
    starters) to working with smaller files.Because all of those benefits can be gained from using a decent IDE. Eclipse is free. It can show only the current method and it can collapse nested classes.
    You say "If
    Java had a mechanism...." Well, I could answer: It
    does have such a mechanism, and that mechanism is
    packages.Packages are not a mechanism for creating private inner classes in separate files. Eclipse has a mechanism for making the fact that they reside in the same source file a non-issue.
    >>
    I am not being cavalier. I have no argument, onlyan
    opinion.Again, you are perfectly entitled to your opinion.
    But if it is truly an opinion, and nothing more, why
    bother telling me about it. You might as well post
    your favorite color. It is the reasons for your
    opinion that interest me, and you still have not
    really given any.I have had lengthy arguments about the issue of method and class size. Like I said before, I prefer very small classes and methods. I also think the number of nested classes should be as small as possible. But I have no problem with large files. Files are just one way to organize source code. The size of the things in the files matters, not the files themselves.

  • Ojvmtc reports xy.jar is not a class or jar file

    Hi
    I am a little bit confuced because ojvmtc reports an error I can not imagine about:
    oracle@cikic-desktop:~/Downloads/dom4j-1.6.1$ ojvmtc /u01/app/oracle/product/11.1.0/mds/jdk/jre/lib/jce.jar
    /u01/app/oracle/product/11.1.0/mds/jdk/jre/lib/jce.jar is not a class or jar file
    The set is closed
    But jce.jar is a jar file and I can inflate it:
    oracle@cikic-desktop:/tmp/fo$ jar -xf /u01/app/oracle/product/11.1.0/mds/jdk/jre/lib/jce.jar
    oracle@cikic-desktop:/tmp/fo$ ls -l
    total 8
    drwxr-xr-x 3 oracle oinstall 4096 2010-05-03 19:40 javax
    drwxr-xr-x 2 oracle oinstall 4096 2010-05-03 19:40 META-INF
    And if I do a ojvm on a class file everything is working like expected:
    oracle@cikic-desktop:/tmp/fo$ ojvmtc javax/crypto/Mac.class
    The set is not closed
    96 classes are missing
    So It must be a configuration mistake somewhere ...
    Can you please help me out.
    Thanks
    Christian Maier

    Coole thanks, this works pretty well!
    Chris
    oracle@cikic-desktop:~$ cp /u01/app/oracle/product/11.1.0/mds/jdk/jre/lib/jce.jar /tmp/
    oracle@cikic-desktop:~$ ojvmtc /tmp/jce.jar
    The set is not closed
    131 classes are missing

Maybe you are looking for

  • Weird PHP issue with Server 4.0.3

    Yosemite 10.10.2 OS X Server 4.0.3 default PHP installation 5.5.14 Ok, so I successfully added a couple of Virtual Host websites, strictly using the OS X Server.app, and I can browse on my local network using the private url I gave them. The problem

  • Using Accelerometer to detect a panning motion

    i'm wondering if it is even possible and is so, how would i go about detecting a user panning the iphone from side to side (as in when one is framing a picture). i really just want to know when the phone is moving and direction. i don't really need a

  • BestPractices Error - Set Decimal Notation and Date Format

    Hello everyone, first of all, I don't know, if this is the right forum for my question, but I hope so We're trying to implement the Best Practices Scenarios to a new SAP ERP System. We did the steps of the following url, where everything worked fine:

  • Why my iphone 5 doesnt charge?

    My brand new iphone 5 doesnt charge help me

  • Problem with Oracle 9i client to access multiple oracle databases

    I am having problem setting up oracle client 9i to access multiple oracle db. When I finish installing Oracle 8.x client, I simply replace the tnsnames.ora that the installation created with the ones that I have. I can access three different database