Problem with constructor of inner class.
Hi everybody!
I have an applet which loads images from a database.
i want to draw the images in a textarea, so i wrote an inner class, which extends textarea and overrides the paint method.
but everytime i try to disply the applet in the browser this happens:
java.lang.NoClassDefFoundError: WohnungSuchenApplet$Malfl�che
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1590)
at java.lang.Class.getConstructor0(Class.java:1762)
at java.lang.Class.newInstance0(Class.java:276)
at java.lang.Class.newInstance(Class.java:259)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:567)
at sun.plugin.AppletViewer.createApplet(AppletViewer.java:1778)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:496)
at sun.applet.AppletPanel.run(AppletPanel.java:293)
at java.lang.Thread.run(Thread.java:536)
so my class has no own constructor, it just has the paint method overwritten.
my class looks like this:
public class Malfl�che extends javax.swing.JTextArea{
public void paint(Graphics g){
Color grey=new Color(220,220,220);
g.drawImage(img,10,10,null);
how should a constructor for this class look like?
sorry i am quite new to this, so i really dont have a clue!
my class does not have any attributes or requires any so it doesnt need a constructor, doesnt it?
thanks a lot
tim
First off, unlike regular classes, inner classes can be declared public, private, protected, and default.
Secondly, why are you using the JTextArea to display an image, why not use a JLabel, which takes an Image object as its constructor.
Thirdly, when you drew your image you did not give it a width and height
g.drawImage(img, 0,0, img.getWidth(null), img.getHeight(null), null);
otherwise it will make your image 1 X 1 pixels. not big enough to see.
Similar Messages
-
Problem with Outer and Inner Classes....or better way?
Right now I'm trying to create an Inner class.
My .java file compiles ok, and I create my jar file too.
But when I try to instantiate the Inner class, it fails:
java.lang.NoClassDefFoundError: com/myco/vlXML/vlXML$vlDocument.
Here's the class code:
public class vlXML{
private ArrayList myDocList=new ArrayList(); //holds documents
public vlXML(){
private class vlDocument{
public vlDocument(){
//stuff goes here
public vlDocument vlDOC(){
return new vlDocument();
public void addDocument(){
vlXML xxx=new vlXML();
vlDocument myDoc=xxx.vlDOC();
myDocList.add(myDoc);
public int getNumDocs(){
return myDocList.size();
}Then, from a jsp page, I call:
vlXML junk1=new vlXML();
junk1.addDocument();...and get the error...
Can someone help me figure out why it's failing?
Thanks....You nailed it - thanks....(duh!)
While I have your attention, if you don't mind, I have another question.
I'm creating a Class (outer) that allows my users to write a specific XML file (according to my own schema).
Within the XML file, they can have multiple instances of certain tags, like "Document". "Document"s can have multiple fields.
Since I don't know how many "Documents" they may want, I was planning on using an Inner Class of "Document", and then simply letting them "add" as many as necessary (thus the original code posted here).
Does that seem like an efficient (logical/reasonable) methodology,
or is there there something better?
Thanks Again... -
Hi guys im having problems with constructors. I get the following error:
package\Cat5500IfXDescr.java:60: cannot resolve symbol
symbol : constructor IfXDescrScanner(java.net.Inet,java.lang.String,java.lang.String,differentPackage.SNMPCommandObserver)
location: class package.IfXDescrScanner
super( InetAddress.getByName( device.getIpAddress()),
I have a class SNMPCommand
I have a class IfDescrScanner which extends SNMPCommand
I have a class Cat5500IfXDescr which extends IfDescrScanner
Here are the respective constructors:
public SNMPCommand( InetAddress agentAddress, String readCommunityString,
String writeCommunityString, SNMPCommandObserver observer ){
peer = new SnmpPeer( agentAddress );
peer.getParameters().setReadCommunity( readCommunityString );
peer.getParameters().setWriteCommunity( writeCommunityString );
this.observer = observer;
public SNMPCommand( InetAddress agentAddress, SNMPCommandObserver observer ){
peer = new SnmpPeer( agentAddress );
this.observer = observer;
public IfXDescrScanner(Device device, SNMPCommandObserver observer )
throws UnknownHostException{
super( InetAddress.getByName( device.getIpAddress()),
device.getReadCommunityString(),
device.getWriteCommunityString(),
observer );
public Cat5500IfXDescr( Device device, SNMPCommandObserver observer )
throws UnknownHostException{
super( InetAddress.getByName( device.getIpAddress()),
device.getReadCommunityString(),
device.getWriteCommunityString(),
observer );
}You'll notice SNMPCommand has 2 constructors. i get no error when i call super to the SNMPCommand constructor from IfXDescrScanner however when i call it from Cat5500IfXDescr i get the error. Is what i am doing illegal. Anyone any ideas on how i solve this. Thanks
Joe.From what I see in a single look, you are passing an object of java.net.Inet to the constructor and the constructor takes InetAddress object as parameter.
Just check it.
Hi guys im having problems with constructors. I get
the following error:
package\Cat5500IfXDescr.java:60: cannot resolve
symbol
symbol : constructor
IfXDescrScanner(java.net.Inet,java.lang.String,java.la
ng.String,differentPackage.SNMPCommandObserver)
location: class package.IfXDescrScanner
super( InetAddress.getByName(
device.getIpAddress()),
I have a class SNMPCommand
I have a class IfDescrScanner which extends
SNMPCommand
I have a class Cat5500IfXDescr which extends
IfDescrScanner
Here are the respective constructors:
public SNMPCommand( InetAddress agentAddress,
String readCommunityString,
String writeCommunityString,
tring, SNMPCommandObserver observer ){
peer = new SnmpPeer( agentAddress );
peer.getParameters().setReadCommunity(
y( readCommunityString );
peer.getParameters().setWriteCommunity(
y( writeCommunityString );
this.observer = observer;
public SNMPCommand( InetAddress agentAddress,
, SNMPCommandObserver observer ){
peer = new SnmpPeer( agentAddress );
this.observer = observer;
public IfXDescrScanner(Device device,
SNMPCommandObserver observer )
throws UnknownHostException{
super( InetAddress.getByName(
e( device.getIpAddress()),
device.getReadCommunityString(),
device.getWriteCommunityString(),
observer );
public Cat5500IfXDescr( Device device,
SNMPCommandObserver observer )
throws UnknownHostException{
super( InetAddress.getByName(
e( device.getIpAddress()),
device.getReadCommunityString(),
device.getWriteCommunityString(),
observer );
}You'll notice SNMPCommand has 2 constructors. i get
no error when i call super to the SNMPCommand
constructor from IfXDescrScanner however when i call
it from Cat5500IfXDescr i get the error. Is what i am
doing illegal. Anyone any ideas on how i solve this.
Thanks
Joe. -
Problem with running the midlet class (Error with Installation suite )
hi everyone...
i have problem with running the midlet class(BluetoothChatMIDlet.java)
it keep showing me the same kind of error in the output pane of netbeans...
which is:
Installing suite from: http://127.0.0.1:49296/Chat.jad
[WARN] [rms ] javacall_file_open: wopen failed for: C:\Users\user\javame-sdk\3.0\work\0\appdb\delete_notify.dat
i also did some research on this but due to lack of forum that discussing about this,im end up no where..
from my research i also find out that some of the developer make a changes in class properties..
where they check the SIGN DISTRIBUTION...and also change the ALIAS to UNTRUSTED..after that,click the EXPORT KEY INTO JAVA ME SDK,PLATFORM,EMULATOR...
i did that but also didnt work out..
could any1 teach me how to fix it...
thanx in advance... :)actually, i do my FYP on bluetooth chatting...
and there will be more than two emulators running at the same time..
one of my frens said that if u want to run more than one emulator u just simply click on run button..
and it will appear on the screen.. -
Problem with constructors and using public classes
Hi, I'm totally new to Java and I'm having a lot of problems with my program :(
I have to create constructor which creates bool's array of adequate size to create a sieve of Eratosthenes (for 2 ->n).
Then it has to create public method boolean prime(m) which returs true if the given number is prime and false if it's not prime.
And then I have to create class with main function which chooses from the given arguments the maximum and creates for it the sieve
(using the class which was created before) and returns if the arguments are prime or not.
This is what I've written but of course it's messy and it doesn't work. Can anyone help with that?
//part with a constructor
public class ESieve {
ESieve(int n) {
boolean[] isPrime = new boolean[n+1];
for (int i=2; i<=n; i++)
isPrime=true;
for(int i=2;i*i<n;i++){
if(isPrime[i]){
for(int j=i;i*j<=n;j++){
isPrime[i*j]=false;}}}
public static boolean Prime(int m)
for(int i=0; i<=m; i++)
if (isPrime[i]<2) return false;
try
m=Integer.parseInt(args[i]);
catch (NumberFormatException ex)
System.out.println(args[i] + " is not an integer");
continue;
if (isPrime[i]=true)
System.out.println (isPrime[i] + " is prime");
else
System.out.println (isPrime[i] + " is not prime");
//main
public class ESieveTest{
public static void main (String args[])
public static int max(int[] args) {
int maximum = args[0];
for (int i=1; i<args.length; i++) {
if (args[i] > maximum) {
maximum = args[i];
return maximum;
new ESieve(maximum);
for(int i=0; i<args.length; i++)
Prime(i);}I've made changes and now my code looks like this:
public class ESieve {
ESieve(int n) {
sieve(n);
public static boolean sieve(int n)
boolean[] s = new boolean[n+1];
for (int i=2; i<=n; i++)
s=true;
for(int i=2;i*i<n;i++){
if(s[i]){
for(int j=i;i*j<=n;j++){
s[i*j]=false;}}}
return s[n];}
public static boolean prime(int m)
if (m<2) return false;
boolean x = sieve(m);
if (x=true)
System.out.println (m + " is prime");
else
System.out.println (m + " is not prime");
return x;}
//main
public class ESieveTest{
public static int max(int[] args) {
int maximum = args[0];
for (int i=1; i<args.length; i++) {
if (args[i] > maximum) {
maximum = args[i];
return maximum;
public static void main (String[] args)
int n; int i, j;
for(i=0;i<=args.length;i++)
n=Integer.parseInt(args[i]);
int maximum=max(args[]);
ESieve S = new ESieve(maximum);
for(i=0; i<args.length; i++)
S.prime(i);}
It shows an error for main:
{quote} ESieveTest.java:21: '.class' expected
int maximum=max(args[]); {quote}
Any suggestions how to fix it? -
Hi guys
when i created this constructor, it keep throwing back this error whcih i don't understand.
public interface MyNumber {
// data defination
private int wholenumber = 0;
private float fraction = 0;
// constructor
public MyNumber(int whole, float fract) {
wholenumber = whole;
fraction = fract;
may i know what is wrong with my constructor code?
it keep saying <identifier>> expectedpart b of the question has ask for an interface class
any problem with my code?
public class MyNumber {
// data defination
private int wholenumber = 0;
private float fraction = 0;
// constructor
public MyNumber(int whole, float fract) {
wholenumber = whole;
fraction = fract;
// methods or operations
public MyNumber add(MyNumber c, MyNumber d){
int r = wholenumber + c.getWholeNumber();
float i = fraction + c.getFraction();
MyNumber newC = new MyNumber(r,i);
//MyNumber newD = new MyNumber(i);
return newC;
//return newD;
public MyNumber subtract(MyNumber c, MyNumber d){
int r = wholenumber - c.getWholeNumber();
float i = fraction - c.getFraction();
MyNumber newC = new MyNumber(r,i);
//MyNumber newD = new MyNumber(i);
return newC;
//return newD;
public MyNumber multiply(MyNumber c, MyNumber d){
int r = wholenumber * c.getWholeNumber();
float i = fraction * c.getFraction();
MyNumber newC = new MyNumber(r,i);
//MyNumber newD = new MyNumber(i);
return newC;
//return newD;
public int getWholeNumber(){
return wholenumber;
public float getFraction(){
return fraction;
} -
Problem with setContentPane() in JFrame class
I recently discovered a problem with the setContentPane method in the JFrame class. When I use setContentPane(Container ..), the previously existing contentPane remains in the stack. I have tried nullifying getContentPane(), and all manner of things, but, each time I use setContentPane, I have another instance of a JPanel in the stack.
I'm using code similar to setContentPane(new CustomJPanel()); and each time the user changes screens, and a similar call to that is made, the old CustomJPanel instance remains in the stack. Can anyone suggest a way around this? On their own the panels do not take up very much memory, but after several hours of usage, they will build up.I tried what you suggested; it only resulted in a huge performance decrease. The problem with memory allocation is still there.
Here is the method I use to switch screens in my app:
public static void changeScreen (JPanel panel){
try{
appFrame.setTitle("Wordinary : \""+getTitle()+"\"");
appFrame.setContentPane(panel);
appFrame.setSize(appFrame.getContentPane().getPreferredSize());
appFrame.getContentPane().setBackground(backColour);
for (int i = 0; i < appFrame.getContentPane().getComponents().length; i++)
appFrame.getContentPane().getComponents().setForeground(textColour);
//System.out.println("Background colour set to "+backColour+" text colour set to "+textColour);
appFrame.validate();
catch (Exception e){
//System.out.println("change");
e.printStackTrace();
And it is called like this:
changeScreen(new AddWordPanel());The instantiation of the new instance is what is causing the memory problems, but I can't think of a way around it. -
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 -
Problem with extending an extended class
Hi JDC
I have to use a scrolled list several times among my program so I create a class named ScrolledList that extends Jpanel and an inner class that extends ScrolledLIst.
The problem shows up when I?m trying to add an item inside the inner class, the code pass compilation, it even enter the addItem() but its dont add item
public class ScrolledList extends JPanel{
DefaultListModel dlm = new DefaultListModel();
JList list = new JList();
JScrollPane js = new JScrollPane(list);
ScrolledList(){
setLayout(new BorderLayout());
add(js,BorderLayout.CENTER);
}here is the class i use whenever i need this scrolled list:
public class innerClass extends ScrolledList{
public void addItem(String item){
System.out.println("addItem invoked...");
this.dlm.addElement(item);
public static void main(String[] args) {
JFrame frame = new JFrame("InnerClass");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
frame.getContentPane().add(new innerClass(),
BorderLayout.CENTER);
frame.setSize(400, 125);
frame.setVisible(true);
innerClass ic = new innerClass();
ic.addItem("Shay");
}what im doing wrong(code example please)?
ThanksHi
i tried this , its still dont add item to the list:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ScrolledList extends JPanel{
//List variables
private DefaultListModel dlm = new DefaultListModel();
private JList clientsList = new JList(dlm);;
private JScrollPane clientScroll = new JScrollPane(clientsList);
public final boolean PRINTLN=true;
public void p(String out){
if(PRINTLN)
System.out.println(out);
public ScrolledList() {
try {
jbInit();
catch(Exception e) {
e.printStackTrace();
private void jbInit() throws Exception {
this.setLayout(new BorderLayout());
this.add(clientScroll);
public void addClient(String client){
p("addClient invoked....");
dlm.addElement(client);
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.getContentPane().add(new ScrolledList());
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
frame.setSize(300,300);
frame.setVisible(true);
ScrolledList s = new ScrolledList();
s.addClient("Shay");
}thanks -
Problems with Sandisk 16Gb microsdhc Class 2 in N8...
Hello to you all..
Yesterday my 16Gb microSDHC died... I wanted to charge my phone and suddenly the phone freezes and it refused to turn back on. So I decided to eject the 16Gb card and gladly I managed to turn my phone back on. So the problem was the microSDHC card. I had tested it with my PC but no response..
This is my 2nd 16Gb card!! I never had problems with the standard 8Gb card..
So finally I went to the shop and returned the dead card and got a refund.So now I am back to my old 8Gb card and till now everything works fine.
But is there somebody else that had problems with a 16Gb microSDHC card in a N85 (particulary Sandisk)? Because I think the card reacted on some sort of Voltage level that he could not handle... Can this be possible?
Black Nokia N97, productcode 0585162 FW V20.0.19 NL and 8Gb microSDHC A-data cardhi n97fanboy
The class thing is to do with the minimum write speed of the cards, and thus the class only describes "how good" a card is for the type of device the card is used with. Some devices require slower speed cards than others, some devices might require faster ones. Grschinon further up this thread indicated that class 2 may be too slow for the N85, and that it's minimum write speed is that of a class 4, which is the class of the micro SHDC card that the UK version of the N85 is supplied with. This makes sense.
However, the Nokia website states that the N97 and N85 is compatible with their Class 2 16GB card, but we're not sure that this is correct given the behaviour of Sandisk Class 2 16GB cards in the device (I've had one fried, and almost lost the second one). Personally I've gone back to the 8GB Class 4 supplied with the phone, and will try and find a larger class 4 or above card at a later date.
I'm sorry I can't help with the best card for the N97 as I've only played with the device in the Nokia Store. If it comes supplied with a microSDHC card, check for the digit on that card. If you do decide to upgrade it to a larger card, you should stick to the same class number it has or a larger one, from the experiences dkawa and myself have had with the N85. Best to try and get someone from Nokia's technical department's to confirm.
HTH
S.
Black/Copper N85 sw v.30.019 Nokia 8GB Class 4 microSDHC -
Problem with name of Servlet Class
Hi to all,
I have a class named AClassName and it work fine when a spider come in my web site he try to connect to the class named aclassname. I try to create a class with all lower case letter, but in windows system it's not possibile to have in the same directory a file named AClassName.class and one with the name aclassname.class
Any help will be appreciated
Regards
Rinaldoyou can solve this using servlet mapping,
which is the correct way to call servlets,
instead of using the invoker
<servlet-mapping>
<servlet-name>ListaLoc</servlet-name>
<url-pattern>/listaloc</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ListaLoc</servlet-name>
<url-pattern>/ListaLoc</url-pattern>
</servlet-mapping> -
What is the problem with constructor?......
class sam
private String name;
private String desgn;
public sam(String s){ name=s; }
public void showName(){ System.out.println(" Name "+name); }
public void setDesgn(String d){ desgn=d; }
public void showDesgn(){ System.out.println(" Designation "+desgn); }
class samp1 extends sam {
private String Name;
private String degree;
public samp1(String s){
Name=s;
public void showName(){ System.out.println(" Name "+Name); }
public void setDegree(String d){ degree=d; }
public void showDegree(){ System.out.println(" Degree "+degree); }If you want the sam constructor to be called you'll
have to put in
super(s);To elaborate a bit...
Here are the rules for constructors--"ctors" because I'm lazy. Also, because I'm lazy, "super(...)" and "this(...)" mean any super or this call, regardless of how many args it takes, including those that take no args.
1) Every class has at least one ctor.
1.1) If you do not define an explicit constructor for your class, the compiler provides a implicit constructor that takes no args and simply calls super().
1.2) If you do define one or more explicit constructors, regardless of whether they take args, then the compiler no longer provides the implicit no-arg ctor. In this case, you must explicitly define a public MyClass() {...} if you want one.
1.3) Constructors are not inherited.
2) The first statement in the body of any ctor is either a call to a superclass ctor super(...) or a call to another ctor of this class this(...) 2.1) If you do not explicitly put a call to super(...) or this(...) as the first statement in a ctor that you define, then the compiler implicitly inserts a call to super's no-arg ctor super() as the first call. The implicitly called ctor is always super's no-arg ctor, regardless of whether the currently running ctor takes args.
2.2) There is always exactly one call to either super(...) or this(...) in each constructor, and it is always the first call. You can't put in more than one, and if you put one in, the compiler's implicitly provided one is removed. -
Problem with Beansbinding as separated class
Hello,
I used beansbinding together with a JTextfield and usually it works, which means that if I do it like the following;
/// the class that I use implements a binding listener
binding = Bindings.createAutoBinding(AutoBinding.UpdateStrategy.READ_WRITE, // two-way binding
systemDaten , //source and backing bean
BeanProperty.create("debeyeHueckelkonstanteA") , //name of field
debeyeHueckelkonstanteA, // name of jtextfield as swing source
textProperty, //Property textProperty = BeanProperty.create("text");
"debeyeHueckelkonstanteA" ); // Name
binding.setConverter(null);
binding.setValidator(null);
binding.addBindingListener(this); /// this = because the class that I use implements a binding listener
binding.bind();
//if I use instead of binding.addBindingListener(this) the following version with an anonym class, it works as well:
binding.addBindingListener(new BindingListener() {
@Override
public void bindingBecameBound(Binding binding) {
@Override
public void bindingBecameUnbound(Binding binding) {
@Override
public void syncFailed(Binding binding, SyncFailure failure) {
@Override
public void synced(Binding binding) {
@Override
public void sourceChanged(Binding binding, PropertyStateEvent event) {
@Override
public void targetChanged(Binding binding, PropertyStateEvent event) {
} );if I use this form using a customized class and a constructor with the data (double number) to be represented :
binding.addBindingListener(new SystemBindingListener(systemDaten.getMesstemperatur()) )with a class implementing the listener as below it doesn't work.
public class SystemBindingListener implements BindingListener {
private double value = 0.0;
public SystemBindingListener(double value) {
super();
this.setValue(value);
private final PropertyChangeSupport propertyChangeSupport =
new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.addPropertyChangeListener(l);
public void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
@Override
public void bindingBecameBound(Binding binding) {
System.out.println("bound ok " + binding.getName()); }
@Override
public void bindingBecameUnbound(Binding binding) {
System.out.println("unbound ok " + binding.getName()); }
@Override
public void syncFailed(Binding binding, SyncFailure failure) {
System.out.println("sync not ok " + binding.getName()); }
@Override
public void synced(Binding binding) {
this.setValue(value);
System.out.println("sync ok " + binding.getName() + this.getValue()); }
@Override
public void sourceChanged(Binding binding, PropertyStateEvent event) {
System.out.println("source ok " + binding.getName()); }
@Override
public void targetChanged(Binding binding, PropertyStateEvent event) {
System.out.println("target ok " + binding.getName()); }
public double getValue(){
return value;
public void setValue(double value){
final double old = this.value;
this.value = value;
propertyChangeSupport.firePropertyChange(
"value", // the name of the property
old, // the old value
value // the new value
this.value = value;
}The problem is that I wanted to "outsource" the BindingListener but change its output depending on the source modified on the GUI.
I have several textfields and I want to be sure that whenever one of them gets modified the value is modified in the backing bean
and this should be visible by the System.out.println(this.getValue()) output.
I added Property Support but this didn't help. As you can see I want a Read-Write Binding which works as described in the first two examples.
But with a externalized class binding doesn't work.
Does anyone know how to do this.
Thanks for help
Thommy
Edited by: 886674 on 4 oct. 2011 08:31
Edited by: 886674 on 4 oct. 2011 08:35Hello,
I am not sure if it is as short as you want to, but anyway there cannot be less classes than that, because I need each of them and any further reduction
would falsify the situation given.
Also there are only some lines which are determining size, location - and especially Layout - etc which I left nearly as they are.
Before using the given function addComponent() I had big problems to get a proper GUI Layout so I changed not to much concerning the layout (I didn't want to take the risk that nothing appears at all (or not at the right place) as I experienced many times before).
Anyway, it is much less than the 10 classes (or the 30 original classes) I had before. So here is the code:
package controls;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.jdesktop.beansbinding.AutoBinding;
import org.jdesktop.beansbinding.BeanProperty;
import org.jdesktop.beansbinding.Binding;
import org.jdesktop.beansbinding.Binding.SyncFailure;
import org.jdesktop.beansbinding.BindingGroup;
import org.jdesktop.beansbinding.BindingListener;
import org.jdesktop.beansbinding.Bindings;
import org.jdesktop.beansbinding.Property;
import org.jdesktop.beansbinding.PropertyStateEvent;
public class Main {
public static Mainframe wg = null;
public static void main(String[] args) {
wg = new Mainframe();
wg.setVisible(true);
class Mainframe extends JFrame {
public static final long serialVersionUID = 1111111;
private JPanel pnlOben;
private JPanel pnlMitte;
private KonstantenPanel kp = null;
private Dimension screendimension;
private Dimension dimension;
public Mainframe(){
super();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
screendimension = Toolkit.getDefaultToolkit().getScreenSize();
dimension = new Dimension();
dimension.setSize(400, 400);
this.setSize(dimension);
this.setLocation((int) ((screendimension.getSize().getWidth()) / 2), (int) (screendimension.getSize().getHeight()/ 2));
init();
public void init(){
desktopMalen();
private void desktopMalen() {
this.setLayout(new BorderLayout(20, 20));
this.add(NordPanelMalen(), BorderLayout.NORTH);
this.add(CenterPanelMalen(), BorderLayout.WEST);
this.add( new JPanel(),BorderLayout.SOUTH);
private JPanel NordPanelMalen() {
pnlOben = new JPanel(new FlowLayout(FlowLayout.LEFT));
pnlOben.add(new JLabel("Test"));
return pnlOben ;
private JPanel CenterPanelMalen() {
this.pnlMitte = new JPanel(); //new FlowLayout(FlowLayout.CENTER
this.pnlMitte.setLayout(new GridLayout(1, 1));
Dimension d = new Dimension();
this.pnlMitte.setSize(400,400); d.setSize(400, 400);
KonstantenPanel bp = new KonstantenPanel(d); //// the panel with the swing component
this.pnlMitte.add(bp);
return pnlMitte;
class KonstantenPanel extends JPanel {
public static final long serialVersionUID = 1111111;
private Systemdaten systemDaten = null;
private JTextField messtemperatur;
private BindingGroup bindinggroup = null;
private Binding binding;
private SystemBindingListener sbl1;
public KonstantenPanel(Dimension d) {
this.setSize(d);
init();
private void init() {
systemDaten = new Systemdaten(); /////// the bean class
GridBagLayout gbl = new GridBagLayout();
this.setLayout(gbl);
this.addComp(gbl,new JLabel("Konstanten"),0,0,4,1,0,0,GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST);
this.addComp(gbl,new JLabel(" "), 0,1,4,1,0,0,GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST);
this.addComp(gbl,new JLabel("Messtemperatur "), 0,2,2,1,0,0,GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST);
/////the swing component using beansbinding
messtemperatur = new JTextField("298.15 ");
messtemperatur.setName("messtemperatur");
this.addComp(gbl,messtemperatur , 0,3,2,1,0,0,GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST);
///all the binding is done here in:
bindProperties();
@SuppressWarnings("unchecked")
private void bindProperties() {
Property textProperty = BeanProperty.create("text");
bindinggroup=new BindingGroup();
binding = Bindings.createAutoBinding(
AutoBinding.UpdateStrategy.READ_WRITE, // two-way binding
systemDaten, // bean
BeanProperty.create("messtemperatur"),
messtemperatur, //field
textProperty, //name of property
"messtemperatur" //name
sbl1 = new SystemBindingListener(systemDaten.getMesstemperatur());
binding.addBindingListener(sbl1);
binding.setConverter(null);
binding.setValidator(null);
binding.bind();
bindinggroup.addBinding(binding);
bindinggroup.bind();
public void addComp ( //Container cont,
GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty, int cbc, int a)
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = cbc ; //GridBagConstraints.BOTH;
gbc.gridx = x; gbc.gridy = y;
gbc.gridwidth = width; gbc.gridheight = height;
gbc.weightx = weightx; gbc.weighty= weighty;
gbc.anchor = a; gbl.setConstraints(c, gbc);
this.add(c);
* in praxis the extra class would be especially interesting if there are more variables *
class SystemBindingListener implements BindingListener {
private double value = 0.0;
SystemBindingListener(double value) {
super();
this.setValue(value);
private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.addPropertyChangeListener(l);
void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
@Override
public void bindingBecameBound(Binding binding) {
System.out.println("bound ok " + binding.getName()); }
@Override
public void bindingBecameUnbound(Binding binding) {
System.out.println("unbound ok " + binding.getName()); }
@Override
public void syncFailed(Binding binding, SyncFailure failure) {
System.out.println("sync not ok " + binding.getName()); }
@Override
public void synced(Binding binding) {
this.setValue(value);
System.out.println("sync ok " + binding.getName() + this.getValue()); }
@Override
public void sourceChanged(Binding binding, PropertyStateEvent event) {
System.out.println("source ok " + binding.getName()); }
@Override
public void targetChanged(Binding binding, PropertyStateEvent event) {
System.out.println("target ok " + binding.getName()); }
double getValue(){
return value;
void setValue(double value){
final double old = this.value;
this.value = value;
propertyChangeSupport.firePropertyChange(
"value", // the name of the property
old, // the old value
value // the new value
this.value = value;
class Systemdaten {
static final long serialVersionUID = 1111111L;
private double messtemperatur = 298.15;
private final PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
void addPropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.addPropertyChangeListener(l);
void removePropertyChangeListener(PropertyChangeListener l) {
propertyChangeSupport.removePropertyChangeListener(l);
double getMesstemperatur() {
return messtemperatur;
void setMesstemperatur(double messtemperatur) {
final double old = this.messtemperatur;
this.messtemperatur = messtemperatur;
propertyChangeSupport.firePropertyChange(
"messtemperatur", // the name of the property
old, // the old value
messtemperatur // the new value
this.messtemperatur = messtemperatur;
}Due to your questions I guess to know why it there is no binding between the Listener-Instance and the Swing-Compound but
I don't see how to get all three classes working together.
I mean: If I want to have a binding between the value variable in the BindingListener and the SwingCompound I need to create such a binding in the panel-Class.
But I only created a binding with the field in systemDaten because this is the bean I want to work with.
It seems that I didn't understand how it is managed that the value is changing in the bean and the swingcompound simultaneously - after creating and adding the
BindingListener-Instance.
In the two other cases there is still a communication between the Listener and the swingCompound but in the given case there is not.
I was not aware of this problem before and I am still not sure to fully understand why it works in the other cases.
Do I need to give the binding variable or swing compound to the BindingListener to keep communication ?
Thanks for your help
Thommy -
Problem with axis2 and QName class
Hello,
We have deployed AXIS2 library with a library project (J2EE server component) as it is specify by a SAP guide. We deployed the sda file correctly and we know how to reference this library in Portal Application and J2ee Module WEB or EJB.
The problem is when we want to use internally javax.xml.namespace.QName is thrown an exception. This exception is shown bellow:
java.lang.LinkageError: loader constraints violated when linking javax/xml/namespace/QName class
at wpt.ConventerStub.populateAxisService(ConventerStub.java:52)
at wpt.ConventerStub.<init>(ConventerStub.java:100)
at wpt.ConventerStub.<init>(ConventerStub.java:89)
at wpt.ConventerStub.<init>(ConventerStub.java:140)
at wpt.ConventerStub.<init>(ConventerStub.java:132)
at com.eadscasa.axis2.Axis2Converter.doContent(Axis2Converter.java:26)
In the guide is said that we have to deploy a library project to avoid this problem but we still are getting it. I have realized that Qname class is a basic class into the JDK 1.4 and in different projects as AXIS2 making revision about this class.
How can I deploy these libraries (jars) without dependencies with SAP Portal libraries?
Is there any way to setup the classloader to avoid this error?
In the documentation about this kind of project it is said that you cannot deploy libraries (*.jar) with the same name. I donu2019t know if it happens the same with the class.
We have to develop web Services with Soap 1.2 specification, SAML etc and we need to develop this class because sap portal doesnu2019t support this kind o features.
Regards,
Daniel UrbanoHi,
Firstly thanks for you reply. I generate the client with wsdl2java tool as it is mentioned in AXIS2 documentation and as you specified in your blog. After I follow the steps:
Step 1 - Generating the Axis2.war
Step 2 u2013 Modify the service *.aar file
Step 3 u2013 Create the J2EE library
Step 4 u2013 Create the J2EE application wrapping the web module axis2.war
We know how to make the step 1,2 and 3 but there is a little mess in the last step. Donu2019t worry about this because we got the general idea in this document. According to the guide the main problem is to solve a classloading conflict because it only can be loaded the libraries once and you need the AXIS2 libraries for *.arr and for the axis2 engine to be able to manage this module. This problem it is solved making a J2EE library Project and putting a reference to this library in the module, applications or project, which have to use AXIS2 libraries.
We have 3 different kind of projects that we can develop according to Sap Netweaver:
J2EE Project:
· Web Module Project: Resulting a war file.
· Enterprise Application Project: Resulting a ear file
· EJB Module Project: Resulting a war file.
Portal Application
· Portal Application Project: Resulting a par file.
In any project mentioned upper we know how to deploy these with a reference to this library project that previously we deployed successfully in the portal. But the problem is when we are going to check this module running it the server give us an exception.
java.lang.LinkageError: loader constraints violated when linking javax/xml/namespace/QName class
at wpt.ConventerStub.populateAxisService(ConventerStub.java:52)
at wpt.ConventerStub.(ConventerStub.java:132)
at com.eadscasa.axis2.Axis2Converter.doContent(Axis2Converter.java:26)
This exception is because exist classes into the axis2 libraries as javax.xml.namespace.Qname that are in SAP Portal libraries into the J2ee Server (JDK 1.4). This conflict is mentioned in the blog u201C360° View on enterprise SOAu201D where Michael Koegel, the author, says that if you want that AXIS2 libraries works you will have to work around with the dependencies of libraries.
The main problem in this point it is that we donu2019t know how to resolve this dependencies and if it is possible that other module of SAP Portal wonu2019t work fine if we change the base libraries. AXIS2 has newer classes than SAP Portal and it is possible that we can break other SAP Portal functions. In this case if we can not get that AXIS2 and SAP Portal co-exist in the same server we will probably have to change our way to get the enterprise objectives.
In order to resolve these dependencies we have found a SAP Note Number: 1138545. In this note it is said that we can setup the precedence class loader in the visual admin into the deploy service. If you add your AXIS2 library at the beginning of StandardAplicationReferences variable in the deploy service, it is loaded the axis2 libraries first and it works the services but other portal functionality fails. This variable it is used to load the libraries precedence for all applications in the Server. If we could setup the class load precedence in a web module project or the system doesnu2019t take into account the server libraries for this module it will work perfectly.
If you could specify more the last point of your manual, I will appreciate it.
Regards,
Daniel Urbano -
SITUATION:
- I am developing a plug-in-based software with plug-ins based on LabVIEW classes which are instanced at run-time. The actual plug-in classes are derived from generic plug-in classes that define the interfaces to the instancing VI and may provide basic functionality. This means that many of the classes' methods are dynamic dispatch and methods of child classes may even call the parent method.
- Top-level plug-ins (those directly accessed by the main VI) each have a run method that drives a plug-in-specific statechart.
- The statechart of the data acquisition plug-in class (DAQ class) calls a method of the DAQ class that reads in data from a NI FPGA card and passes it on to another component via a queue.
PROBLEM:
- At higher sampling rates, an FPGA-to-host FIFO overflow occurs after some time. When I "burden" the system just by moving a Firefox browser window over the screen, the overflow is immediately triggered. I did not have this kind of problem in an older software, where I was also reading from an FPGA FIFO, but did not make use of LabVIEW classes or statecharts.
TRIED SOLUTIONS (WITHOUT SUCCESS):
- I put the statechart into a timed loop (instead of a simple while loop) which I assigned specifically to an own core (I have a quad-core processor), while I left all the other loops of my application (there are many of them) in simple while loops. The FIFO overflow still does occur, however.
QUESTION:
- Does anybody have a hint how I could tackle this problem? What could be the cause: the dynamic dispatch methods, the DAQ statechart or just the fact that I have a large number of loops? However, I can hardly change the fact that I have dynamic dispatch methods because that's the very core of my architecture...
Any hints are greatly appreciated!
Message Edited by dlanger on 06-25-2009 04:18 AM
Message Edited by dlanger on 06-25-2009 04:19 AM
Solved!
Go to Solution.I now changed the execution priority of all the VIs involved in reading from the FPGA FIFO to "time critical priority (highest)". This seems to improve the situation very much: so far I did not get a FIFO overflow anymore, even when I move around windows on the screen. I hope it stays like this...
Maybe you are looking for
-
I have a working maven pom which builds my AIR app using AIR 2.6 and I am trying to migrate it to use the new AIR 3.5 SDK. According to the official release notes here : http://helpx.adobe.com/en/flash-player/release-note/fp_115_air_35_release_notes
-
Why do I have a Gray Screen on my 4s after updating to iOS 8.1.2??
I updated my iPhone 4s to the new operating system, iOS 8.1.2 (12B440), and now have a grey screen (no color). No, the grayscale is not on. The color comes in and out at times but only for seconds at a time. Could it be the new update? And if it is,
-
Cannot reinstall PS5 on the same PC
Last week I have reinstalled my PC with Win7 Ultimate (clean install) As I was having some problems after installing PS5 as well, I uninstalled it from Programs and Features to reinstall it. Now I cannot reinstall it any more. I checked with the 'Adv
-
Can a song crash iTunes?
I have a song I've been working on in GarageBand. When I play back the mixed-down track in iTunes, iTunes crashes. Not every time, and not in the same place in the song, but frequently. It's almost impossible to get through one listen. It doesn't mat
-
Why cant i open ithmb files on my mac? I have recently changed from PC to mac...thought ithmb was an apple format?