Saving a Class Object to file
Hi guys.
If i have a Class object (an instance of "java.lang.Class"), is it possible to write that object to file so i end up with a .class file somewhere on my computer?
Any help appreciated.
Thanks
-Nonameo-
Hope i didnt cause any conflict here guys.
Just to clear things up:
when i wrote my original request, i hadnt even heard of Serialization so that was not my request. After being told about it, i tried it out but the output file produced didnt work like a normal .class file.
I havent yet gone into researching the byte-code library idea, but it does sound promising.
I think ejp grasped what i was getting at. Sorry if i confused anyone with my request, i didnt realise it could be interpreted in multiple ways.
Thanks again
-Nonameo- (OP)
Message was edited by:
Nonameo
Similar Messages
-
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ä
[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 -
Converting a class object back to a .class file
Hi,
How can i convert a class object back to a .class file ? Thanksany pointers on how to do it then ? i don't have
access to the native codeIf I have understood you correctly, you have native code that generates bytecode. Currently you load the class this bytecode represents right into the classloader, but you want to save it to disk as a .class file. Right?
If so, you just have to get hold of that bytecode before it "disappears" into the classloader, and save it to disk. How you can best do this depends on exactly how you communicate with that native code.
If I have misunderstood your problem (and that's not unlikely), please try to be clearer. -
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. -
Class object saving performce issue - (Workflow activity)
Hi,
I created a custom activity with a class object. If I call WorkflowDesigner.Save(filename) method, it takes a lot of time for saving class object.
public class Abc: AsyncCodeActivity
public Class1 Class1Obj
get
return class1Obj;
set
class1Obj= value;Hi,
where are your external services located If they are in the same assembly as the workflow (and this goes for custom activities as well), you can have all sorts of problems because you (well, VS) are constantly reloading assemblies and they can
get out of synch.
For more information, please refer to the discussion:
https://social.msdn.microsoft.com/Forums/en-US/cce06d6f-4e7e-4294-9a14-d17e8addea45/workflow-designer-very-slow?forum=windowsworkflowfoundation
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
Create Class objects from an Array of File Objects
Hi There,
I'm having extreme difficulty in trying to convert an array of file objects to Class objects. My problem is as follows: I'm using Jfilechooser to select a directory and get an array of files of which are all .class files. I want to create Class objects from these .class files. Therefore, i can extract all the constructor, method and field information. I eventually want this class information to display in a JTree. Very similar to the explorer used in Netbeans. I've already created some code below, but it seems to be throwing a NoSuchMethodError exception. Can anyone please help??
Thanks in advance,
Vikash
/* the following is the class im using */
class FileClassLoader extends ClassLoader {
private File file;
public FileClassLoader (File ff) {
this.file = ff;
protected synchronized Class loadClass() throws ClassNotFoundException {
Class c = null;
try {
// Get size of class file
int size = (int)file.length();
// Reserve space to read
byte buff[] = new byte[size];
// Get stream to read from
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream (fis);
// Read in data
dis.readFully (buff);
// close stream
dis.close();
// get class name and remove ".class"
String classname = null;
String filename = file.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
classname = filename.substring(0,i);
// create class object from bytes
c = defineClass (classname, buff, 0, buff.length);
resolveClass (c);
} catch (java.io.IOException e) {
e.printStackTrace();
return c;
} // end of method loadClass
} // end of class FileClassLoader
/* The above class is used in the following button action in my gui */
/* At the moment im trying to output the data to standard output */
private void SelectPackage_but2ActionPerformed(java.awt.event.ActionEvent evt) {
final JFileChooser f = new JFileChooser();
f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int rVal = f.showOpenDialog(Remedy.this);
// selects directory
File dir = f.getSelectedFile();
// gets a list of files within the directory
File[] allfiles = dir.listFiles();
// for loop to filter out all the .class files
for (int k=0; k < allfiles.length; k++) {
if (allfiles[k].getName().endsWith(".class")) {
try {
System.out.println("File name: " + allfiles[k].getName()); // used for debugging
FileClassLoader loader = new FileClassLoader(allfiles[k]);
Class cl = loader.loadClass();
//Class cl = null;
Class[] interfaces = cl.getInterfaces();
java.lang.reflect.Method[] methods = cl.getDeclaredMethods();
java.lang.reflect.Field[] fields = cl.getDeclaredFields();
System.out.println("Class Name: " + cl.getName());
//print out methods
for (int m=0; m < methods.length; m++) {
System.out.println("Method: " + methods[m].getName());
// print out fields
for (int fld=0; fld < fields.length; fld++) {
System.out.println("Field: " + fields[fld].getName());
} catch (Exception e) {
e.printStackTrace();
} // end of if loop
} // end of for loop
packageName2.setText(dir.getPath());
}It's throwing the exeption on the line:
FileClassLoader loader = new FileClassLoader(allfiles[k]);
I'm sure its something to do with the extended class i've created. but i cant seem to figure it out..
Thanks if you can figure it out -
Manipulate a object serialized file when the .class file is missing
I want to know if it is possible to recovery the object when its class file is missing! I guess it needs to manipulate the file and extract the values and ask user to name the values, after that, create a new class file for future use. However, I don't know how to manipulate the object serialized file. I really appreciate any hints you guys can give
I suppose if you created the class file, with the same name, package, and unique serial ID, fields, etc, it can be done.
Another option is to not use serialization if you are just trying to recover the data. Again you would need to know what the datatypes of the fields are to know what it is you are trying to read, how to parse serialized data, etc. Some Objects are easy to read, like Strings. The more complicated ones are the simple datatypes. -
How to read appended objects from file with ObjectInputStream?
Hi to everyone. I'm new to Java so my question may look really stupid to most of you but I couldn't fined a solution by myself... I wanted to make an application, something like address book that is storing information about different people. So I decided to make a class that will hold the information for each person (for example: nickname, name, e-mail, web address and so on), then using the ObjectOutputStream the information will be save to a file. If I want to add a new record for a new person I'll simply append it to the already existing file. So far so good but soon I discovered that I can not read the appended objects using ObjectInputStream.
What I mean is that if I create new file and then in one session save several objects to it using ObjectOutputStream they all will be read with no problem by ObjectInputStream. But after that if in a new session I append new objects they won't be read. The ObjectInputStream will read the objects from the first session after that IOException will be generated and the reading will stop just before the appended objects from the second session.
The following is just a simple test it's not actual code from the program I was talking about. Instead of objects containing different kind of information I'm using only strings here. To use the program use as arguments in the console "w" to create new file followed by the file name and the strings you want save to the file (as objects). Example: "+w TestFile.obj Thats Just A Test+". Then to read it use "r" (for reading), followed by the file name. Example "+r TestFile.obj+". As a result you'll see that all the strings that are saved in the file can be successfully read back. Then do the same: "+w TestFile.obj Thats Second Test+" and then read again "+r TestFile.obj+". What will happen is that the strings only from the first sessions will be read and the ones from the second session will not.
I am sorry for making this that long but I couldn't explain it more simple. If someone can give me a solution I'll be happy to hear it! ^.^ I'll also be glad if someone propose different approach of the problem! Here is the code:
import java.io.*;
class Fio
public static void main(String[] args)
try
if (args[0].equals("w"))
FileOutputStream fos = new FileOutputStream(args[1], true);
ObjectOutputStream oos = new ObjectOutputStream(fos);
for (int i = 2; i < args.length ; i++)
oos.writeObject(args);
fos.close();
else if (args[0].equals("r"))
FileInputStream fis = new FileInputStream(args[1]);
ObjectInputStream ois = new ObjectInputStream(fis);
for (int i = 0; i < fis.available(); i++)
System.out.println((String)ois.readObject());
fis.close();
else
System.out.println("Wrong args!");
catch (IndexOutOfBoundsException exc)
System.out.println("You must use \"w\" or \"r\" followed by the file name as args!");
catch (IOException exc)
System.out.println("I/O exception appeard!");
catch (ClassNotFoundException exc)
System.out.println("Can not find the needed class");How to read appended objects from file with ObjectInputStream? The short answer is you can't.
The long answer is you can if you put some work into it. The general outline would be to create a file with a format that will allow the storage of multiple streams within it. If you use a RandomAccessFile, you can create a header containing the length. If you use streams, you'll have to use a block protocol. The reason for this is that I don't think ObjectInputStream is guaranteed to read the same number of bytes ObjectOutputStream writes to it (e.g., it could skip ending padding or such).
Next, you'll need to create an object that can return more InputStream objects, one per stream written to the file.
Not trivial, but that's how you'd do it. -
Regarding persistent classes & objects
Hi all,
I am new to abap objects, please give me some simple links of persistent classes & object.
Let me know the difference between persistent classes & other simple classes..
I ensure you for points!
cheers.Hi,
Transient and persistent data
In principle, ABAP programs work with local program data, which resides in the programs internal session. This data lives only as long as its context that is, as long as its associated procedure (for local procedure data); its object (for attributes of classes); or its program (for global program data). This data is known as transient. Data that can be preserved beyond the runtime of the program is known as persistent. In SAP Systems, persistent data usually occurs as the content of database tables, but also as the content of files on application and presentation servers.
To work with persistent data, the system has to load it into transient data objects belonging to the ABAP program while that program is being executed. Then, after processing has been completed, it stores the data in a persistent form again. During this time, the content of the data exists twice: once in the ABAP program (transiently), and once in the appropriate storage medium (persistently). A typical process would be reading data from a database table using the SELECT statement into a transient work area; modifying the work area; and then updating the database table (using UPDATE). In such cases, the contents of transient and persistent data are different in the interim during this process.
Data in object-oriented programming
In an ideal object-oriented application, data occurs only as the attributes of objects (if we ignore the local data in methods for the time being). Objects are an aggregation of functions (in methods) and data (in attributes). The description of an object that is, the class occurs persistently as a piece of source code, but its attributes exist only as long as the object. However, an object in ABAP Objects is transient in principle. It exists in the internal program session only from the time it is generated (using CREATE OBJECT) until it is deleted by the Garbage Collector. Therefore, to work with persistent data in objects, you must program access to where those objects are stored within the methods of the class.
However, in completely object-oriented business application programming, then it is pointless simply to transfer the classical separation of data and functions to the methods that is, to work with objects, but use procedural programming within the objects themselves. Ideally you could save the encapsulation of data and functions persistently within the object instead. A program could then leave an object in a certain state and a second program could continue working on the object in that state. Classes of objects are already persistent anyway, but you need some way of saving the attributes of an object persistently and then make reference to the appropriate class. The Persistence Service allows you to do exactly that.
Persistent Classes
To use the Persistence Service for objects, the classes of these objects must be created as persistent classes in the Class Builder. The term persistent class does not imply that a class is persistent. (As a template for objects, every class is persistent). Rather, it means that the objects of that class and their state are managed by the Persistence Service. For example, the objects of these classes are instantiated in the ABAP program with a method of the Persistence Service, which ensures that the initialization is correct (not with the usual CREATE OBJECT statement). When the Class Builder creates a persistent class, it automatically generates an associated class, known as the class actor or class agent, whose methods manage the objects of persistent classes. As well as their identity, persistent classes can contain key attributes, which allow the Persistence Service to ensure that the content of each persistent object is unique.
Managed Objects
The objects of persistent classes are managed by the Persistence Service. This means, among other things, that these objects are instantiated with a method of the class actor, not with the CREATE OBJECT statement. These objects are known as managed objects. Objects managed by the Persistence Service can be either persistent or transient.
Persistent objects must be managed by the Persistence Service. The Persistence Service connects the object and the database.
Transient objects of persistent classes are also managed by the Persistence Service. For example, the Persistence Service ensures that the object is unique within a program (by checking its key attributes), but not for a connection to the database.
Plz refer to this link:
http://help.sap.com/saphelp_nw70/helpdata/en/f5/a3682ebc6911d4b2e80050dadfb92b/content.htm
Thanks,
Samantak.
Rewards points for useful answers. -
Instantiation of a class from a file name
Basically here's how it goes:
I have a FilenameFilter looking into a folder for files ending on .java (java code). It stores them in a file array. I want to turn that file into a class so I can get some info from it.
Class c= (Class)list[j].getClass();
Page i = (Page)c.newInstance();
System.out.println("Creating "+ i.getName()+" entry on map");
this.putPageInMap(i);Where list is the list with the file names, Page is the Class/Object for the code and putPageInMap(i) is a method to put info from the "Page" in a map. This last method uses get methods from the Object to get the values to map.
An Idea?
Here's the full code just in case:
* WWWMap.java
* Created on February 28, 2005, 9:32 AM
package WWW;
import java.util.*;
import java.io.*;
* @author PRSJJOZ
public class WWWMap {
/** Creates a new instance of WWWMap */
private Properties page= new Properties();
private Properties SS= new Properties();
private Properties PageNames= new Properties();
public WWWMap() {
public boolean pageInMap(String p)
if(page.get(p)==null)
return false;
return true;
public boolean SSInMap(String p)
if(SS.get(p)==null)
return false;
return true;
public void putPageInMap(Page p)
System.out.println("Placing "+ p.getName() +" into map, (Values: "+p.getName()+"\t"+p.getEd()+", "+
p.getClass().toString());
page.put(p.getName()+"\t"+p.getEd(),
p.getClass().toString());
public Object getPageFromMap(String p)
if(this.pageInMap(p))
return page.get(p);
if(this.SSInMap(p))
return SS.get(p);
else
return null;
public void saveMap()
System.out.println("Saving...");
try{
FileOutputStream out = new FileOutputStream("E:/WWW/Decks/Map.txt");
page.store(out,"Page Map");
System.out.println("Map saved to E:/WWW/Decks/Map.txt");
catch (IOException e1) {
System.out.println("IO problem: "+ e1);
e1.printStackTrace();
public void loadMap()
System.out.println("Loading...");
try{
FileInputStream in = new FileInputStream("E:/WWW/Decks/Map.txt");
page.load(in);
System.out.println("Map loaded");
catch (IOException e1) {
System.out.println("IO problem: "+ e1);
e1.printStackTrace();}
public void Iterate()
System.out.println("Iterating page map...");
int size = page.size();
Iterator keys = page.entrySet().iterator();
for (int i=0;i<size;i++)
Map.Entry entry = (Map.Entry) keys.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("Key: "+ key.toString()+", Value: "+ value.toString());
public void fillMap()
System.out.println("Filling Map");
File directory = new File("E:/WWW/Data/Pages");
File[] list = directory.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".java");
System.out.println(list.length);
for(int i=0;i<list.length;i++)
System.out.println(list.getName());
for(int j=0;j<list.length;j++)
/*try{
Class c= (Class)list[j].getName().getClass();
System.out.println(.getClass());
Page i = (Page)c.newInstance();
System.out.println("Creating "+ i.getName()+" entry on map");
this.putPageInMap(i);
catch (InstantiationException e) {
System.out.println("IO problem: "+ e);
e.printStackTrace();
catch (IllegalAccessException e1)
System.out.println("IO problem: "+ e1);
e1.printStackTrace();
public static void main(String args[]) {
WWWMap map = new WWWMap();
map.fillMap();
//map.loadMap();
/*Punch p = new Punch();
map.putPageInMap(p);
map.saveMap();
map.loadMap();
map.Iterate();*/Runtime.exec the compiler on that .java file (you might have to parse for the package structure first). Then Class.forName() it. Then do whatever you like with it. Or, depending on the info you need, simply parse the source or the bytecode.
-
Saving ALV Grid to Local File issue - Missing half of the report
Hi Experts, Good Day.
I have developed an ALV Grid report using class CL_SALV_TABLE which displays 200 Columns and 100+ rows/records. It is displaying well, but when I am saving the output into local file (any type) there only 98 columns are downloading and remaining all the columns are missing.
I would like to know whether there is any restriction for number of columns or what might the problem for it. How can I download all the columns into local file.
Thanks in Adv.
VijayHi,
Thanks for your response. Even though there are multiple ways to send data to local file I believe all three are same. And even I am facing same issue all the ways. Only 98 Columns data is getting downloaded into Files (it might be .txt, .xls, etc.).
After downloading first 98 Columns, I am hiding the downloaded columns and again I am downloading remaining columns. Then I am merging in the Excel file. This is very complicated for the End-User. So, please help me out.
I have used only following methods for displaying ALV.
For initial object/instance:
CL_SALV_TABLE=>FACTORY,
For ALV functions:
CL_SAVL_TABLE->GET_FUNCTIONS,
CL_SALV_FUNCTIONS_LIST->SET_ALL,
For Column heading and Optimized width:
CL_SALV_TABLE->GET_COLUMNS,
CL_SALV_COLUMNS_TABLE->SET_OPTIMIZE,
CL_SALV_COLUMNS_TABLE->GET_COLUMN,
CL_SALV_COLUMN->SET_SHORT_TEXT,
To display grid:
CL_SALV_TABLE->DISPALY.
- Thanks
Vijay -
Problem with Dynamically accessing EJB Class objects in WL 7.0 SP1
I am trying to build a component which has the ability to instantiate and execute
an known EJB method on the fly.
I have managed to build the component but when I try and execute it I get a ClassNotFoundException.
I know that the EJB I am trying to invoke is deployed and available on the server,
as I can see it in the console, I also seen to have been able to get the remote
interface of the object, my problem occurs when I try and access the class object
so I can perform a create on the object and then execute my method
The code I have written is below:
private Object getRemoteObject(Context pCtx, String pJNDIName, String pHomeBean)
throws Exception {
String homeCreate = "create";
Class []homeCreateParam = { };
Object []homeCreateParamValues = {};
try {
//This call seems to work and doesn't throw an exception
Object home = pCtx.lookup(pJNDIName);
//However this call throws a java.lang.ClassNotFoundException
Class homeBean = Class.forName(pHomeBean);
Method homeCreateMethod = homeBean.getMethod(homeCreate,homeCreateParam);
return homeCreateMethod.invoke(home, homeCreateParamValues);
} catch (NamingException ne) {
logStandardErrorMessage("The client was unable to lookup the EJBHome.
Please make sure ");
logStandardErrorMessage("that you have deployed the ejb with the JNDI
name "+pJNDIName+" on the WebLogic server ");
throw ne;
} catch (Exception e) {
logStandardErrorMessage(e.toString());
throw e;
Any advice would be really appreciated, I'm fast running out of ideas, I suspect
it has something to do with the class loader but I'm not sure how to resolve it
Regards
Jo CorlessHello Joanne,
Congratulations! I'm very happy that you've managed to fix your problem. It's
always essential to understand how to package applications when deploying on BEA
WebLogic. Usually, by throwing everything into an EAR file solves just about all
the class loader problems. :-) Let us know if you have any further problems that
we can assist you with.
Best regards,
Ryan LeCompte
[email protected]
http://www.louisiana.edu/~rml7669
"Joanne Corless" <[email protected]> wrote:
>
>
I've fixed it!!!!!!!!
Thanks to everyone who gave me help!!!!
The class loader was the culprit which is what I suspected all along.
As soon
as I put the 2 jar files I was using into an EAR file the problem went
away!!!!!
Thanks again
Jo Corless
"Ryan LeCompte" <[email protected]> wrote:
Hello Joanne,
As Mr. Woollen mentioned, I also believe it's a problem with the class
loader.
You need to be careful how you arrange your EJBs, because WebLogic has
a specific
method in which it loads classes in an EAR, JAR, and WAR file(s). Please
refer
to http://dev2dev.bea.com/articles/musser.jsp for more information about
BEA WebLogic
class loading mechanisms and caveats. Also, try printing out the various
methods
that are available on the object that was returned to you via reflection.
For
example, use the getMethods() method, which returns an array of Method
objects
that you can subsequently cycle through and print out the various method
names.
This way you can discover if the class found/returned to you is indeed
the one
you intend to locate.
Hope this helps,
Ryan LeCompte
[email protected]
http://www.louisiana.edu/~rml7669
Rob Woollen <[email protected]> wrote:
I believe the issue is the home interface class for this EJB is not
available in the class loader which is doing the reflection.
If you do:
getClass().getClassLoader().loadClass(homeInterfaceClassName)
I suspect it will fail. Reflection still requires that the class be
loadable.
-- Rob
Joanne Corless wrote:
Hi Slava,
If I make my code look like you describe below I get a compliationerror telling
me that
home.getMethod() is not recognised (no such method)
If I change it slightly and use
Method homeCreateMethod =
home.getClass().getMethod(homeCreate,homeCreateParam);
The code will compile OK but when executed it still throws a NoSuchMethodException
Any ideas ?
Thanks for your help so far
Regards
Jo Corless
Your code should look like
Object home = pCtx.lookup(pJNDIName);
Method homeCreateMethod =
home.getMethod(homeCreate,homeCreateParam);
return homeCreateMethod.invoke(home, homeCreateParamValues);
Regards,
Slava Imeshev
"Joanne Corless" <[email protected]> wrote in message
news:[email protected]...
Hi Ryan,
I also wanted to mention that if you do a "header search" in this
particular
newsgroup
with the search query as "reflection", you will see many previousmessages
regarding
reflection and EJBs. I believe you could learn a lot from thedifficulties
that
others have faced and solved.I tried that and although there was a number of similar cases noneof them
actually
seem to fix my issue. Thanks for the suggestion though
Are the EJBs that you are trying to access accessible via your
system
classpath?
Try to avoid having them accessible via the main system classpath,and
only bundle
them in your appropriate EJB jar files (contained in an EAR file,for
example).Maybe I should have laid the problem out a little clearer.
I have a number of EJB's bundled up in a JAR file which is hot deployedto
the
server. Within this first JAR file is an EJB (SSB) component that
needs
to
be
able to invoke a known method on another EJB. This second EJB may
or
may
not be
within the first JAR file but it also will be hot deployed.
The component trying to invoke the method on the 2nd EJB has to
be
able to
create
an instance of the 2nd EJB without actually knowing anything bar
a
JNDI
Name which
is passed in at runtime.
I can get as far as doing the
Object home = pCtx.lookup(pJNDIName);
This returned a class with the name
"com.csc.edc.projects.allders.httppostoffice.postman.PostmanBean_mp8qy2_Home
Impl_WLStub"
My problem seems to occur when I try and invoke the create method
Method homeCreate = home.getClass().getMethod("create", new Class[0]);
My code throws a java.lang.NoSuchMethodException at this point so
I
am
unable
to progress to the next step of :
Object bean = homeCreate.invoke(home, null);
So I can return the instantiated bean back to the calling client.
Why am I getting the NoSuchMethodException, is is because I am gettinga
stub
back rather than the home interface and if so how do I get the truehome
interface
from the bean
Thanks in advance
Jo Corless -
What is the advantage of using IB to create XIBs/Class Objects over coding?
Hi all,
I hoping someone can provide me some pros and cons as to when I should use IB to create XIBs and/or class objects as opposed to directly coding them.
For example, if I choose Apple's Template for creating a Navigation Based Application (cocoa touch), the project creates two NIB files - MainMenu and RootViewController.
However looking at one of demo apps SimpleDrillDown, it does not have a RootViewController XIB and instead creates it via code.
Another example from the same two apps is that the template generates a "Navigation Controller" class object in the Mainmenu.xib. SimpleDrillDown does not bother with this in the XIB, but uses code to generate the controller:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Create the navigation and view controllers
RootViewController *rootViewController = [[RootViewController alloc] init];
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
self.navigationController = aNavigationController;
[aNavigationController release];
[rootViewController release];
// Configure and show the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
as opposed to the template which only needs this:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Configure and show the window
// Navigation Controller is defined in MainWindow.xib
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
So what are the advantages of each approach. Why does apple suggest one approach and yet all its demos use another.
Any thoughts, answers gratefully received.
TIA, Michael.You can do whatever you're comfortable with, but most of the best Cocoa programmers--the ones on the Mac, I mean--recommend putting everything you can into Interface Builder.
It's a little like the difference between writing a program to do a bunch of financial calculations and using a spreadsheet. Yeah, the program can do everything the spreadsheet can--and more besides--but you'll find it far easier to create, use and modify the spreadsheet.
Interface Builder takes away a lot of completely meaningless choices ("What order should I create the objects in? How should I name the variables? How should I create their frames? What order should I set the attributes in?"), leaving you with an interface optimized for creating and arranging objects, and allowing your code to focus on what you really do need to think about--your application's logic.
(By the way--part of the reason Apple's demos don't all use Interface Builder is that the very first SDK releases didn't have it. Back then, you had to create all your views programatically. Believe me, I have no wish to go back to setting autoresize masks manually. Now get off my lawn, whippersnapper.) -
I started using JasperReports for my web application report generation. I'm using JSPs for web development.
I created a .jrxml file using iReport and used the following code to generate the report.
try {
JasperDesign jasperDesign = JRXmlLoader.load("C:\\tomcat\\webapps\\web\\JSP\\reports\\samples\\pmm-final.jrxml");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
// Second, create a map of parameters to pass to the report.
Map parameters = new HashMap();
parameters.put("Title", "JasperReport");
// Third, get a database connection
Connection conn = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn=DriverManager.getConnection("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C:/tomcat/webapps/db1/db1.mdb");
// Fourth, create JasperPrint using fillReport() method
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, conn);
// You can use JasperPrint to create PDF
//JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\tomcat\\webapps\\web\\JSP\\reports\\TestReport.pdf");
JasperExportManager.exportReportToHtmlFile(jasperPrint, "C:\\tomcat\\webapps\\web\\JSP\\reports\\TestPMM.html");
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "C:\\tomcat\\webapps\\web\\JSP\\reports\\TestPMM.xls");
exporter.exportReport();
// Or to view report in the JasperViewer
//JasperViewer.viewReport(jasperPrint);
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
The above pmm-final.jrxml uses a subreport 'top.jasper'. Error being thrown while loading top.jasper file. Error is as follows.
java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBaseReport; lo
cal class incompatible: stream classdesc serialVersionUID = 604, local class ser
ialVersionUID = 606
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86
at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLo
ader.java:236)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubre
port.java:295)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:
340)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageBand(JRVert
icalFiller.java:1224)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVe
rticalFiller.java:353)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRV
erticalFiller.java:205)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic
alFiller.java:119)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
613)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
483)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:77
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa
nager.java:248)
at org.apache.jsp.JSP.UserGuide_jsp._jspService(org.apache.jsp.JSP.UserG
uide_jsp:74)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:325)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
95)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
NESTED BY :
java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBaseReport; lo
cal class incompatible: stream classdesc serialVersionUID = 604, local class ser
ialVersionUID = 606
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86
at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLo
ader.java:236)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubre
port.java:295)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:
340)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageBand(JRVert
icalFiller.java:1224)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVe
rticalFiller.java:353)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRV
erticalFiller.java:205)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic
alFiller.java:119)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
613)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
483)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:77
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa
nager.java:248)
at org.apache.jsp.JSP.UserGuide_jsp._jspService(org.apache.jsp.JSP.UserG
uide_jsp:74)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:325)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
95)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
NESTED BY :
net.sf.jasperreports.engine.JRException: Error loading object from file : C:\tom
cat\webapps\web\JSP\reports\samples\top.jasper
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:90
at net.sf.jasperreports.engine.util.JRLoader.loadObjectFromLocation(JRLo
ader.java:236)
at net.sf.jasperreports.engine.fill.JRFillSubreport.evaluate(JRFillSubre
port.java:295)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:
340)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageBand(JRVert
icalFiller.java:1224)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVe
rticalFiller.java:353)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRV
erticalFiller.java:205)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic
alFiller.java:119)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
613)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:
483)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:77
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa
nager.java:248)
at org.apache.jsp.JSP.UserGuide_jsp._jspService(org.apache.jsp.JSP.UserG
uide_jsp:74)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper
.java:325)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:2
95)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.ja
va:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBas
eReport; local class incompatible: stream classdesc serialVersionUID = 604, loca
l class serialVersionUID = 606
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:86
... 33 more
Anyone pls help. It's bit urgent. Thanks.I was using iReport v0.5.0 and it uses jasperreports-0.6.7.jar (v0.6.7) of
JasperReports. I compiled and i deployed my application in BEA weblogic server. I got the error listed below. Only after i saw your
response explaining that iReport was the issue, i checked the iReport lib directory and found this version of jasperreport jar.
iReport creates a java source file which is used to a jasper file.
iReport will link in the v0.6.7 version of jasperReports. When you
deploy your web application it will recognize this version through the compiled jasper file and give you the InvalidClassException, even
though you only have one jasperReport jar deployed with your war file.
The way i fixed this problem was to create my web application with the
jasperreport jar comes with iReport.
Thanks for mentioning iReport.
Christopher
Error:
Caused by: java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBas
eReport; local class incompatible: stream classdesc serialVersionUID = 607, local class serialVersionUID = 10002
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:463)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1521)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1521)
... -
How to automate the creation of Function Module & Class Object (SE24)
Experts,
I have the requirement to automate the creation of any type of programs: ie function module (like how we normally create in SE37 together with the parameters), class object (like how we normally create in SE24 together with attribute & method), normal report (like how we did in SE38), module pool and so on.
For example. I backuped my program into a flat file (the entire source code in txt formal or HTML) through a download program and I need to upload back this flat file into another installation of SAP.
Does SAP provide any predefined FM to cater for the above cases or better still, does anyone know of any upload program which I can use for the above requirement.
Thanks in advance.Hi Kris, I can't use the transport system as these are 2 separate SAP installation in a different place. The requirement came in the form of creation of program to be able to generate FM/Class/Report on the go.
Maybe you are looking for
-
In Mail 7.3 on my Retina MacBook Pro on OS 10.9.4, how can I type from the keyboard into a mail message using the Apple Symbols font? When I select the Apple Symbols font from the list accessed from under Format/"Show fonts"/collection-all fonts/Appl
-
I'm trying to create a thumbnail object for an HLIST, the data for the thumbnail is a bytearray containing an image in PNG format. The data comes from a database in an AMF object via FDS. I can see the data in the debugger, and it is not null, but I'
-
Planned Orders -Order level & Order path fields
Dear all, In Planned Orders , in the components tab , the following fields are assigned/populated with some values by the system. Order level Order path Assy Order Level Assy Order path Please clarify , on what basis or what is the logic behind this
-
JAX-WS PL/SQL Web Service with JDeveloper (Weblogic problem)
Hello, does anyone know how to create a JAX-WS webservice based on a pl-sql package using JDeveloper? Maybe it is possible with a newer version of JDeveloper 11.1.2.3, currently I'm using 11.1.1.6 which only offers a JAX-RPC for PlSql Web services. I
-
Here's where I am: 1. Created a WS from BAPI_PERSDATA_GETLIST. Tested with WSADMIN. 2. Imported WSDL into Flex Builder 3. Trying to use this WS to create a simple FLEX application but not able to get it to work. Used the Introspection method and the