 |
 |
Index ‹ java-programmer
|
- Previous
- 3
- JAVAMAIL SMTP error 421Hi all,
I've been looking at this problem for a while, browsing all possible
resources for a possible explanation but no way.
My problem is the following :
I've got a JAVA application listening to messages falling on a
MQSeries queue. The message falling on the queue contains all required
information to compose a mail intended for some recipients. The
application is connected to a mail server and is supposed to send the
mail.
In our development environment everything is fine and works properly.
We are using Exchange server. I made several tests with some 3000
messages falling on the queue and we got 3000 mails in our mail boxes.
The program has been installed at a client site and there we run into
trouble.
After the fifth message has been sent, the program ends with an
exception. It looks like the SMTP server had closed the connection
with no apparent reason.
The log looks like this :
Wed Jun 23 14:59:49 CEST 2004 - spy3 - 5 tasks done.
Wed Jun 23 14:59:50 CEST 2004 - alerter - MailError - Mail server
error in execu
ting a process.
Error when sending a mail through Java Mail API.Can't send command to
SMTP host;
nested exception is:
java.net.SocketException: Software caused connection abort:
socket write error
null
com.misys.alerter.Spy$MailError: Error when sending a mail through
Java Mail API
.Can't send command to SMTP host;
nested exception is:
java.net.SocketException: Software caused connection abort:
socket write
error
at com.misys.alerter.SpyMasterQ.doAction(SpyMasterQ.java:497)
at com.misys.alerter.Spy.run(Spy.java:112)
The line 497 is : try {mailer.sendMail(tmptitle, tmpbody,
recipientTo,recipientDummy, recipientDummy);
The class mailer fills in a mimeMessage and calls
transport.sendMessage(message, message.getAllRecipients() ) ;
which is where I loose control.
The connection to the mail server is made through this method :
public boolean connectSrv( String host, String user, String password)
throws NoSuchProviderException, MessagingException {
Properties props = new Properties();
props.put("mail.smtp.connectiontimeout", "0" );
props.put("mail.smtp.timeout", "0" );
props.put("mail.debug", "true");
session = Session.getDefaultInstance(props, null);
transport = session.getTransport("smtp");
transport.connect(host, user, password);
/* store date time when connection occurs */
dtconnected = new GregorianCalendar();
return transport.isConnected();
}
I added the debug property to get more information. It shows an SMTP
error 421.
Here are some bits of output :
DEBUG SMTP SENT: NOOP
DEBUG SMTP RCVD: 250 2.0.0 OK
DEBUG SMTP SENT: NOOP
DEBUG SMTP RCVD: 250 2.0.0 OK
DEBUG SMTP SENT: NOOP
DEBUG SMTP RCVD: 421 Too many errors on this connection---closing
DEBUG SMTP SENT: NOOP
I have the feeling that something goes wrong on the server side but
have no idea what.
Has any of you already experienced such problem ?
Thanks for your time reading this. Any help or suggestion will be
highly appreciated.
JC
- 3
- 3
- 3
- java regular expression problemHi,
I want to replace mulitple occurances of a string one after the another
with a single string
for eg .
input : a hello b world c java abcabcabc
output: a hello b world c java def
I mean multiple occurances of pattern 'abc' with a single string 'def'.
how can do this with JAVA regular expressions ?
I tried replaceAll method in string class, but I dont know how to
format regular expression.
thanks
Ranu
- 6
- does not opening websites: double loading pictures, helpHello
My internet explorer does not explore some websites. It looks like it
download pictures 2 times. In majority it works - j can see website after
double downloading but sometimes it shows me the web for a moment and then
everything dissapeares and j see white surface. J think it is sure it has
opened it.
HELP ME
How to eliminate this double loading and not showing websites?
And how to install java? it is imposible for it too. ?
Maciej
- 6
- New Mobile Phone forumHello Guys,
This is an awsome place, its nice to be here
Thanks,
Rajen
http://www.mobileuserforum.info
Ps. i run this generic mobile site called
http://www.mobileuserforum.info, we are looking for moderators, please
get in touch with me if any one of you is interested.
- 9
- Actionlisstenerhi
i need to create an applet a GUI IfBut.java which contains three
buttons, Red, Green and Blue
which when clicked will fill the circle with the respective color.
im stuck at the actionPerformed(ActionEvent e) & paint(Graphics g) {
part...dun know wat to put...
any ideas?
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Lab14 extends Applet implements ActionListener {
Button b2, b1,b3;
public void init() {
Panel p = new Panel( );
b1 = new Button( "Red" );
b2 =new Button( "Green" );
b3 = new Button( "Blue" );
p.setLayout( new FlowLayout( ) );
p.add( b1 );
p.add( b2 );
p.add( b3 );
add( p );
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
}
}
public void actionPerformed(ActionEvent e)
{
}
public void paint(Graphics g) {
g.setColor (Color.red);
g.fillOval(20,140,100,100);
}
}
- 9
- JDBC javax.sql.RowSetListener API QuestionI'm implementing a TableModel for my Java Swing application that
listens for the changes in a javax.sql.RowSet object so they can be
displayed in a JTable. It seems there is a limitation in the
RowSetListener API preventing my program from obtaining the information
it needs to keep the JTable in sync with the RowSet.
I can register a RowSetListener with the RowSet object. Whenever a row
is updated, inserted or deleted, it's rowChanged(RowSetEvent event)
method is called.
The problem is that I am unable to distinguish between the three events
(insertRow, updateRow or deleteRow) or obtain the relevant row number
in my implementation of rowChanged(RowSetEvent event).
The only thing the RowSetEvent object that gets passed into rowChanged
seems to tell me is the source RowSet object of the event. I need to
be able to tell which of the three events occured and the relevant row
number so I can so I can notify the JTable by calling the appropriate
fireTableRowsInserted(), fireTableRowsUpdated(), or
fireTablesRowsDeleted() method.
How do I obtain this information from the API? If there is a better
group I should post this question to, please let me know.
Thanks,
Bruce
- 9
- 10
- JVM error while compiling OOoHi folks,
I just tried to upgrade my OpenOffice to the latest version (ports cvsupped
yesterday) and got the following error:
[...]
regmerge ../unxfbsd.pro/bin/regcomp.rdb /
/usr/tmp/usr/ports/german/openoffice-1
.1/work/oo_1.1_src/solver/645/unxfbsd.pro/bin/udkapi.rdb
merging registry
"/usr/tmp/usr/ports/german/openoffice-1.1/work/oo_1.1_src/solve
r/645/unxfbsd.pro/bin/udkapi.rdb" under key "/" in registry
"../unxfbsd.pro/bin/
regcomp.rdb".
setenv CLASSPATH
/usr/tmp/usr/ports/german/openoffice-1.1/work/oo_1.1_src/solver
/645/unxfbsd.pro/bin/unoil.jar:/usr/tmp/usr/ports/german/openoffice-1.1/work/oo_
1.1_src/solver/645/unxfbsd.pro/bin/java_uno.jar:/usr/tmp/usr/ports/german/openof
fice-1.1/work/oo_1.1_src/solver/645/unxfbsd.pro/bin/ridl.jar:/usr/tmp/usr/ports/
german/openoffice-1.1/work/oo_1.1_src/solver/645/unxfbsd.pro/bin/sandbox.jar:/us
r/tmp/usr/ports/german/openoffice-1.1/work/oo_1.1_src/solver/645/unxfbsd.pro/bin
/jurt.jar:/usr/tmp/usr/ports/german/openoffice-1.1/work/oo_1.1_src/solver/645/un
xfbsd.pro/lib:/usr/local/jdk1.4.2/jre/lib/rt.jar:. && setenv
LD_LIBRARY_PATH .
:/usr/tmp/usr/ports/german/openoffice-1.1/work/oo_1.1_src/solenv/unxfbsd.pro/lib
:/usr/local/jdk1.4.2/jre/lib/i386:/usr/local/jdk1.4.2/jre/lib/i386/client:/usr/l
ocal/jdk1.4.2/jre/lib/i386/native_threads:../lib:/usr/tmp/usr/ports/german/openo
ffice-1.1/work/oo_1.1_src/solver/645/unxfbsd.pro/lib:: && \
regcomp -br ../unxfbsd.pro/bin/regcomp.rdb
\
-register \
-r ../unxfbsd.pro/bin/setup_services.tmp
\
-l com.sun.star.loader.Java2 \
-env:UNO_JAVA_COMPPATH=file:///usr/tmp/usr/ports/german/
openoffice-1.1/work/oo_1.1_src/solver/645/unxfbsd.pro/bin \
-c
vnd.sun.star.expand:\$UNO_JAVA_COMPPATH/java_uno_acce
ssbridge.jar
#
# HotSpot Virtual Machine Error, Internal Error
# Please report this error to
# email***@***.com mailing list
#
# Java VM: Java HotSpot(TM) Client VM (1.4.2-p6-root_17_jan_2004_19_33 mixed
mod
e)
#
# Error ID: 4F533F4253440E4350500063
#
Heap at VM Abort:
Heap
Here the portupgrade process hangs. I've got a regcomp process running
that takes 100% cpu load. Are there any hints how to fix this?
Installed jdk: jdk-1.4.2p6_1
I see that p6_3 is already out. Would updating to this one help me in any
way?
cu
Gerrit
--
_______________________________________________
email***@***.com mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-java
To unsubscribe, send any mail to "email***@***.com"
- 11
- Design tool for "multi-thread"I am looking for a tool to design/describe the relation/sequence/interaction
amount threads.
What kind of diagram do poeple normally use to do the analysis/design/model
on multi-thread application?
Any suggestion for a design tool?
thanks
- 11
- "Compiler" variablesHi,
Is there in java a possibility to define "compiler"-variables, for
example to except some code parts from the compilation?
If so, how does it work?
--
Oliver Hirschi
http://www.FamilyHirschi.ch
- 13
- XML tags in JSPHi,
I need to parse and transform xml in a jps. I have un variable that is
an InputStream that contains the XML.
I tried standard library and xtags library with no luck.
<c:out value="${eo.repositoryItem.dataSource.inputStream}" /> show me
that it is an inputStream
anf I tried
<xtags:parse reader="${eo.repositoryItem.dataSource.inputStream}" />
xtags version
<x:parse xml="${eo.repositoryItem.dataSource.inputStream}" /> jstl version
What's wrong ?
thanks
Frederic
- 14
- 16
- 3rd Virtual Machine Research & Technology Symposium (VM '04)--------------------------------------------------------------
3rd Virtual Machine Research & Technology Symposium (VM '04)
May 6-7, 2004, San Jose, CA, USA
http://www.usenix.org/vm04/progc/
Sponsored by USENIX, in cooperation with ACM SIGPLAN
--------------------------------------------------------------
Dear Colleague,
I'm writing to remind you that the VM '04 Early Bird Registration
deadline is quickly approaching. Register by April 16 and save $150:
http://www.usenix.org/vm04/progc/
The 3rd Virtual Machine Research & Technology Symposium (VM '04) will be
held May 6-7, 2004, in San Jose, CA.
VM '04 is the place to network with other VM implementers and share
research and advanced engineering techniques applicable to the
development of Java and other Virtual Machines.
This year's innovative program includes:
--Keynotes by Mendel Rosenblum, Associate Professor of Computer Science,
Stanford University, and Miguel de Icaza, co-founder and CTO of Ximian.
--Fourteen papers on topics ranging from Virtual Machine Architecture
and Performance, to Virtualization, Dynamic Techniques, and Virtual Grids.
We offer group discounts for organizations sending 5 or more employees
to VM '04.
Please contact email***@***.com for more details.
VM '04 promises to be an exciting meeting, presenting the best of
current research on virtual machines. I hope you will join us in San
Jose. Please visit the symposium Web site at
http://www.usenix.org/vm04/progc/ to see the full program and register
today!
Sincerely,
Tarek S. Abdelrahman, University of Toronto
VM '04 Program Chair
NOTICE: The VM '04 Hotel Room Rate has just been reduced to $109
single/double, $129 triple, and $139 quad. Visit
http://hyattsanjose.hyatt.com/groupbooking/usnx to easily reserve your
hotel room within the USENIX room block.
-------------------------------------------------------------
SAVE THE DATE!
3rd Virtual Machine Research & Technology Symposium (VM '04)
May 6-7, 2004, San Jose, CA, USA
http://www.usenix.org/vm04/progc/
Sponsored by USENIX, in cooperation with ACM SIGPLAN
--------------------------------------------------------------
|
| Author |
Message |
Graham Matthews

|
Posted: 2003-7-10 21:57:00 |
Top |
java-programmer, Conditional Compile
Tor Iver Wilhelmsen <email***@***.com> wrote:
> Graham Matthews <email***@***.com> writes:
>
> > Try compiling the above code on a non OS-X platform. It will complain
> > that it can't find classes referenced in the "use_an_apple_extension"
> > bit.
>
> Unless it's a lot of code, use reflection (though you lose the
> compile-time checks). Or invoke a class you compile once on the Mac
> and ship as a .class for inclusion when building later.
I have been waiting for someone to suggest reflection. The cost of
using reflection is that I lose static typing. Moreover its a heavy
weight way of getting conditional compilation don't you think. To
my mind a simple conditional compilation scheme would be far
more desirable.
graham
|
| |
|
| |
 |
Graham Matthews

|
Posted: 2003-7-10 21:57:00 |
Top |
java-programmer >> Conditional Compile
Tor Iver Wilhelmsen <email***@***.com> wrote:
> Graham Matthews <email***@***.com> writes:
>
> > Try compiling the above code on a non OS-X platform. It will complain
> > that it can't find classes referenced in the "use_an_apple_extension"
> > bit.
>
> Unless it's a lot of code, use reflection (though you lose the
> compile-time checks). Or invoke a class you compile once on the Mac
> and ship as a .class for inclusion when building later.
I have been waiting for someone to suggest reflection. The cost of
using reflection is that I lose static typing. Moreover its a heavy
weight way of getting conditional compilation don't you think. To
my mind a simple conditional compilation scheme would be far
more desirable.
graham
|
| |
|
| |
 |
dhek bhun kho

|
Posted: 2003-7-10 22:49:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews <email***@***.com>, Thu, 10 Jul 2003 10:32:45 -0400:
> Idhek bhun kho <email***@***.com> wrote:
>> Use
>> void Adapter getAdapter()
>> {
>> if (macOsX){
>> return Class.forName("osXAdapter").newInstance();
>> } else if (win32) {
>> return Class.forName(win32Adapter").newInstance();
>> }
>> }
>>
>> And adapt your build files to compile only the the platformAdapter classes
>> you need.
>>
>> The classes aren't statically referencing each other, so compiling the
>> class that will retrieve the adapter class won't require the presence of
>> the plaform specific adapter.
>
> This is the best solution I have seen yet, other than simply using
> directly to do conditional builds.
>
I must admit, I saw this one for the first time in the ant code for the
regex tasks. The only 'drawback' is that if you don't have a build file of
some kind you will get the ClassNotFoundException; but a "find | grep" on
"Class.forName" should fix that.
Greets.
|
| |
|
| |
 |
Tim Tyler

|
Posted: 2003-7-10 23:12:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews <email***@***.com> wrote:
: "Jon A. Cruz" <email***@***.com> wrote:
:> Graham Matthews wrote:
:> > "Sebastian Millies" <email***@***.com> wrote:
:> > What happens if I don't have the source for this library.
:> > I just have the jar file, so I can't change the code in it to
:> > implement some new fangled interface.
:>
:> No, but as others have pointed out, you can make a thin wrapper
:> class that implements your interface. And you can use reflection
:> to load it so as to prevent class-loading problems.
: Yes I have to use reflection. That costs me type checking of this code.
: It is also a royal pain in the arse if I have a lot of code using this
: library. It's such a heavy-weight solution compared to conditional
: compilation.
It uses an existing mechanism. Conditional compilation would mean
changes to the JLS that make the language more complex.
I wouldn't describe that as particularly "light".
--
__________
|im |yler http://timtyler.org/ email***@***.com
|
| |
|
| |
 |
Dale King

|
Posted: 2003-7-10 23:17:00 |
Top |
java-programmer >> Conditional Compile
"Tim Tyler" <email***@***.com> wrote in message news:email***@***.com...
> Jon A. Cruz <email***@***.com> wrote:
> : Graham Matthews wrote:
>
> :> Try compiling the above code on a non OS-X platform. It will complain
> :> that it can't find classes referenced in the "use_an_apple_extension"
> :> bit.
>
> : And the aforementioned stub library solves your compilation problem.
>
> : I do it all the time. :-)
>
> What program do you use to make the stubs?
>
> I know Dale wrote a program called CodeHusker to do this - are there
others?
I basically wrote that for you and never really finshed it off for public
consumption. Anybody is welcome to take what I started and run with it. I
attached the source at the end. It uses BCEL to do the job. Having gotten
more experience with BCEL, I would probably do it differently now.
> I always believed that compiling against stubs ought to speed up loading
> and searching rt.jar - and other large libraries people compile against.
>
> These days it might also speed up things like code completion as well.
I'm not so convinced that it will, but am certainly interested to find out.
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.apache.bcel.classfile.Attribute;
import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.ConstantValue;
import org.apache.bcel.classfile.Field;
import org.apache.bcel.classfile.JavaClass;
import org.apache.bcel.classfile.Method;
import org.apache.bcel.classfile.SourceFile;
import org.apache.bcel.generic.ClassGen;
import org.apache.bcel.generic.ConstantPoolGen;
import org.apache.bcel.generic.FieldGen;
import org.apache.bcel.generic.InstructionList;
import org.apache.bcel.generic.MethodGen;
/**
* @author kingd
* @version $Revision$ $Date$
*/
public class CodeHusker
{
private final ZipInputStream zinp;
private final ZipOutputStream zoutp;
private boolean keepResources = false;
private final InstructionList emptyInstructionList = new
InstructionList();
public CodeHusker( InputStream in, OutputStream out )
{
zinp = new ZipInputStream( in );
zoutp = new ZipOutputStream( out );
}
/**
* Sets the keepResources.
* @param keepResources The keepResources to set
*/
public void setKeepResources(boolean keepResources)
{
this.keepResources = keepResources;
}
public static void main(String[] args) throws IOException
{
InputStream in = new FileInputStream( args[0] );
OutputStream fos = new FileOutputStream( args[1] );
CodeHusker h = new CodeHusker( in, fos );
h.setKeepResources( false );
h.beginCodeRemoval();
System.out.println( "done" );
}
public void beginCodeRemoval() throws IOException
{
for( ZipEntry entry; ( entry = zinp.getNextEntry() ) != null; )
{
String name = entry.getName();
handleFile( name, zinp );
}
zinp.close();
zoutp.close();
}
private OutputStream createFile( String name ) throws IOException
{
final ZipEntry outEntry = new ZipEntry( name );
final CRC32 crc = new CRC32();
zoutp.putNextEntry( outEntry );
return new CheckedOutputStream( zoutp, crc )
{
public void close() throws IOException
{
outEntry.setCrc( crc.getValue() );
zoutp.closeEntry();
}
};
}
private void handleFile( String name, InputStream in )
throws IOException, ClassFormatError
{
if( name.endsWith( ".class" ) )
{
InputStream input = new FilterInputStream( in )
{
public void close() throws IOException
{
// ignore closes
}
};
OutputStream out = createFile( name );
handleClass( name, input, out );
}
else if( keepResources )
{
OutputStream out = createFile( name );
for( int c; ( c = in.read() ) != -1; )
{
out.write( c );
}
out.close();
}
}
private void handleClass( String name, InputStream in, OutputStream
out )
throws IOException, ClassFormatError
{
ClassParser parser = new ClassParser( in, name );
JavaClass cls = parser.parse();
ClassGen c = stripClass( cls );
c.getJavaClass().dump( out );
}
private ClassGen stripClass( JavaClass cls )
{
ConstantPoolGen origPool = new
onstantPoolGen( cls.getConstantPool() );
ClassGen c = new ClassGen( "", "", "", 0, new String[ 0 ] );
// ClassGen constructor unfortunately adds a SourceFile
// attribute by default, remove it and any other default attributes.
Attribute[] attrib = c.getAttributes();
for (int i = 0; i < attrib.length; i++)
{
Attribute attribute = attrib[i];
c.removeAttribute( attribute );
}
// Removing the attribute does not remove the strings
// from the constant pool, so let's start again fresh
// with a new constant pool.
ConstantPoolGen cp = new ConstantPoolGen();
c.setConstantPool( cp );
// Since we restarted the constant pool, we need to
// set everything that would have been set in the
// constructor.
c.setClassName( cls.getClassName() );
c.setSuperclassName( cls.getSuperclassName() );
c.setAccessFlags( cls.getAccessFlags() );
c.setMajor( cls.getMajor() );
c.setMinor( cls.getMinor() );
attrib = cls.getAttributes();
for( int i = 0; i < attrib.length; i++ )
{
Attribute attribute = attrib[i];
if( !( attribute instanceof SourceFile ) )
{
c.addAttribute( attribute );
}
}
String[] interfaces = cls.getInterfaceNames();
for( int i = 0; i < interfaces.length; i++ )
{
c.addInterface( interfaces[i] );
}
Field[] flds = cls.getFields();
for (int i = 0; i < flds.length; i++)
{
Field field = flds[i];
// Lose any private fields
if( !field.isPrivate() )
{
Attribute[] fa = field.getAttributes();
for (int j = 0; j < fa.length; j++)
{
Attribute attribute = fa[j];
if( attribute instanceof ConstantValue )
{
ConstantValue cv = (ConstantValue)attribute;
int index = cv.getConstantValueIndex();
index =
cp.addConstant( origPool.getConstant( index ), origPool );
cv.setConstantValueIndex( index );
break;
}
}
FieldGen fg = new FieldGen( field, cp );
c.addField( fg.getField() );
}
}
Method[] methods = cls.getMethods();
for (int i = 0; i < methods.length; i++)
{
Method method = methods[i];
String name = method.getName();
// Remove any private methods except for private constructors
if( !method.isPrivate() || "<init>".equals( name ) )
{
MethodGen mg = new MethodGen( method, cls.getClassName(),
cp );
mg.stripAttributes( true );
mg.removeCodeAttributes();
mg.setInstructionList( new InstructionList() );
c.addMethod( mg.getMethod() );
}
}
return c;
}
}
|
| |
|
| |
 |
John C. Bollinger

|
Posted: 2003-7-10 23:27:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews wrote:
> "Jon A. Cruz" <email***@***.com> wrote:
>
>>Graham Matthews wrote:
>>
>>>"Sebastian Millies" <email***@***.com> wrote:
>>>
>>>What happens if I don't have the source for this library.
>>>I just have the jar file, so I can't change the code in it to
>>>implement some new fangled interface.
>>>
>>
>>No,
>>but as others have pointed out, you can make a thin wrapper class that
>>implements your interface. And you can use reflection to load it so as
>>to prevent class-loading problems.
>
>
> Yes I have to use reflection. That costs me type checking of this code.
It costs you only compile-time type checking of the arguments to the
constructor. If all the constructors used will implement a common
signature or signatures then you could achieve compile-time type
checking by wrapping the reflective instantiation in a suitable method,
which is probably a good idea in the first place. Since you would be
writing the adpater classes yourself, you would have control over the
constructor signatures. You get runtime type checking in any event.
After instantiation the object is assigned to a suitably typed reference
variable (typed according to the interface discussed earlier) which
provides for all the type checking you could get any other way (after
instantiation).
> It is also a royal pain in the arse if I have a lot of code using this
> library. It's such a heavy-weight solution compared to conditional
> compilation.
In most libraries there are few objects that one needs to instantiate
directly. Writing adapters for those objects and suitable interfaces
and loading methods for those kinds of objects is not particularly
heavyweight, and it decouples your application from any specific
library. It certainly beats conditionally specifying class names and
method signatures, which you are otherwise likely to have to do when
substituting one library for another. The conditional approach is much
uglier and more difficult to follow when reading the source code, and it
spreads code maintenance across the whole source. Abstracting the
library implementation into one or a few classes is prettier, more
elegant, and easier to maintain.
John Bollinger
email***@***.com
|
| |
|
| |
 |
John C. Bollinger

|
Posted: 2003-7-10 23:31:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews wrote:
> email***@***.com wrote:
>
>>Graham Matthews <email***@***.com> wrote:
>>
>>
>>>That's all good and well if you own the libraries in question and have
>>>source for them. If not this interfce approach doesnt work.
>>
>>If you don't own the libraries, I'd suggest using an adapter class that you
>>do own. Then, you're not quite so dependent on 3rd party libraries.
>
>
> An adaptor class doens't help since I won't be able to compile the
> adaptor class on any platform that doesn't have the jars in question.
And you are developing on a platform(s) that doesn't have at least all
the features that your deployment platforms will have? I think you have
deeper problems than we are discussing if that is the case. You compile
the adaptor for a particular library on a system that has that library,
of course, and distribute the adaptor with your application without need
to consider whether the deployment platform has the library or not.
Even if you need to provide for compilation in the field you can easily
make compilation of the adapter package for each supported library
separate from compilation of the main application, and compile only
those pieces that are relevant under control of the build system.
John Bollinger
email***@***.com
|
| |
|
| |
 |
Graham Matthews

|
Posted: 2003-7-11 0:55:00 |
Top |
java-programmer >> Conditional Compile
I"John C. Bollinger" <email***@***.com> wrote:
> Graham Matthews wrote:
> > An adaptor class doens't help since I won't be able to compile the
> > adaptor class on any platform that doesn't have the jars in question.
>
> And you are developing on a platform(s) that doesn't have at least all
> the features that your deployment platforms will have?
Precisely. Some of us develop on Mac OS X, and others on Windoze.
The Windoze boys don't have the Mac jars.
graham
|
| |
|
| |
 |
Jon A. Cruz

|
Posted: 2003-7-11 1:00:00 |
Top |
java-programmer >> Conditional Compile
John C. Bollinger wrote:
> Graham Matthews wrote:
>
>> IP A Hill <email***@***.com> wrote:
>>
>>> Graham Matthews wrote:
>>>
>>>> That's all good and well if you own the libraries in question and have
>>>> source for them. If not this interfce approach doesnt work.
>>>
>>>
>>> Facade Pattern
>>
>>
>>
>> It's not useful. I can't compile class X on any platform that doesn't
>> have jar Y (a jar I don't own, nor have the source too, nor can I
>> move). You can wrap X any way you like (e.g. Facade pattern),
>> and the problem still remains.
>
>
> The point is not to wrap X but to wrap Y. The wrapper implements
> whatever interface X requires, and it is not necessary to have Y
> available to compile X. It is not even necessary to have the wrapper
> available to compile X; only the interface is required. In other words,
> X is decoupled from Y. That's generally regarded as a good thing, and
> conditional compilation doesn't provide it -- conditional compilation
> only allows you to select at compile time what library you wish to be
> coupled to.
Just to clarify things here.
I use just that, and it is quite usefull to me.
I have just such an interface wrapping some of the MRJ classes. My app
does different things on Windows, Linux and Macintoshes. However, I
compile it all on one of my Linux boxes.
When my app starts up on a Mac, all the menus jump to the top of the
screen, I have the proper exit item, I hook the about and shutdown
events, all without ever having a single line of Apple code or library
on my machine where I compiled it.
And no conditional compilation either.
|
| |
|
| |
 |
Graham Matthews

|
Posted: 2003-7-11 1:01:00 |
Top |
java-programmer >> Conditional Compile
Tim Tyler <email***@***.com> wrote:
> Graham Matthews <email***@***.com> wrote:
> : Yes I have to use reflection. That costs me type checking of this code.
> : It is also a royal pain in the arse if I have a lot of code using this
> : library. It's such a heavy-weight solution compared to conditional
> : compilation.
>
> It uses an existing mechanism. Conditional compilation would mean
> changes to the JLS that make the language more complex.
>
> I wouldn't describe that as particularly "light".
I agree that given the current state of Java adding conditional
compilation is heavy. I am just surprised it wasn't in there from the
beginning.
But I guess different people's takes on the virtues of conditional
compilation are ... different.
graham
|
| |
|
| |
 |
Jon A. Cruz

|
Posted: 2003-7-11 1:26:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews wrote:
> Yes I have to use reflection. That costs me type checking of this code.
> It is also a royal pain in the arse if I have a lot of code using this
> library. It's such a heavy-weight solution compared to conditional
> compilation.
Ahhh. I think I see where you're missing things.
I'm not saying that you use reflection for each call. That would be a pain.
Instead, you use a single reflection call to load a platform-specific
class that implements your interface for that case.
So all the rest of your code is compiling to your interface, and keeps
all its type checking, etc.
|
| |
|
| |
 |
John C. Bollinger

|
Posted: 2003-7-11 2:34:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews wrote:
> I"John C. Bollinger" <email***@***.com> wrote:
>
>>Graham Matthews wrote:
>>
>>>An adaptor class doens't help since I won't be able to compile the
>>>adaptor class on any platform that doesn't have the jars in question.
>>
>>And you are developing on a platform(s) that doesn't have at least all
>>the features that your deployment platforms will have?
>
>
> Precisely. Some of us develop on Mac OS X, and others on Windoze.
> The Windoze boys don't have the Mac jars.
All the same, only the adapter classes need to be compiled on a platform
containing the appropriate library. That shouldn't be a problem because
you are doing compiles on every platform anyway (or the question
wouldn't have ever arisen). Everything else can be compiled anywhere,
and if necessary you can control whether to compile particular adapter
packages via your build tools. No need for conditional compilation, and
development and maintenance of the core software is significantly eased
by not having to worry about the differing requirements of different
libraries. That's what abstraction is all about.
John Bollinger
email***@***.com
|
| |
|
| |
 |
Graham Matthews

|
Posted: 2003-7-11 3:38:00 |
Top |
java-programmer >> Conditional Compile
I"John C. Bollinger" <email***@***.com> wrote:
> Graham Matthews wrote:
> > Precisely. Some of us develop on Mac OS X, and others on Windoze.
> > The Windoze boys don't have the Mac jars.
>
> All the same, only the adapter classes need to be compiled on a platform
> containing the appropriate library. That shouldn't be a problem because
> you are doing compiles on every platform anyway (or the question
> wouldn't have ever arisen). Everything else can be compiled anywhere,
> and if necessary you can control whether to compile particular adapter
> packages via your build tools. No need for conditional compilation, and
> development and maintenance of the core software is significantly eased
> by not having to worry about the differing requirements of different
> libraries. That's what abstraction is all about.
I guess I don't see it this way. I would have abstracted the differing
libraries using an interface, even when using conditional compilation.
Whether you abstract like this is orthogonal to how you build. I would
have just manged the build process via conditonal compilation, since
the alternatives (e.g. an ant build script) involve more work.
graham
|
| |
|
| |
 |
Jon A. Cruz

|
Posted: 2003-7-11 5:14:00 |
Top |
java-programmer >> Conditional Compile
Graham Matthews wrote:
> Precisely. Some of us develop on Mac OS X, and others on Windoze.
> The Windoze boys don't have the Mac jars.
Again, with a stub jar, the Windoze boys don't need the Mac jars to
compile for the Mac.
Just use the stubs when compiling, don't deliver them.
|
| |
|
| |
 |
Jim Sculley

|
Posted: 2003-7-14 0:02:00 |
Top |
java-programmer >> Conditional Compile
Jon A. Cruz wrote:
> Graham Matthews wrote:
>
>> Precisely. Some of us develop on Mac OS X, and others on Windoze.
>> The Windoze boys don't have the Mac jars.
>
>
> Again, with a stub jar, the Windoze boys don't need the Mac jars to
> compile for the Mac.
>
> Just use the stubs when compiling, don't deliver them.
>
The Limewire folks have a stub JAR for the MRJ classes as well.
Jim S.
--
Remove my extraneous mandibular appendages to reply via e-mail.
|
| |
|
| |
 |
| |
 |
Index ‹ java-programmer |
- Next
- 1
- Distinct ID Number Per Object?I have a case where I'll need distinct and printable names to use in a
reference table. I'd like to make it so each object, whether it's of the
same class as any other object or not, can produce a distinct number. It
looks like if I get the hashcode for any object, the JVM attempts to give
each object a unique hashcode, but it doesn't seem to guarantee it.
Is there any way to get a unique string or number for each object that is
created by a particular JVM?
Thanks!
Hal
- 2
- [ANN] Luxor XUL Standard Widget Toolkit (SWT) Layout Pack Now LiveHi,
I've uploaded the Luxor *Standard* Widget Toolkit (SWT) Layout
package that shows you how to turn SWT layout managers such as
FillLayout, GridLayout and others into easy-to-use XUL tags that you
can use in addition to the built-in XUL box layout system.
This preview includes XUL tags for
* FillLayout
* RowLayout
* GridLayout
* SashForm
Here are some examples to see what's it all about:
FillLayout In Action
--------------------
The FillLayout is mapped to the <fillbox> tag and you can use it like
any other XUL box. Example:
<fillbox>
<label value="Instructions:" />
<label value="1. Fill in your name" />
<label value="2. Fill in your age" />
<label value="3. Fill in your gender" />
<label value="4. Check the box for employment" />
<label value="5. Click on OK" />
</fillbox>
GridLayout In Action
--------------------
The GridLayout is mapped to the <gridbag> tag and the GridData is
mapped to the <griddata> tag. Example:
<gridbag columns="3">
<button label="B1" />
<button label="Wide Button 2" />
<griddata rowspan="2" fill="MAX">
<button label="Button 3" />
</griddata>
<button label="B4" />
<button label="Button 5" />
</gridbag>
SashForm In Action
------------------
The SashForm is mapped to the <splitbox> tag. Example:
<splitbox id="splitbox3">
<button label="One" />
<button label="Two" />
<splitbox orient="vert">
<button label="One" />
<button label="Two" />
<button label="Three" />
</splitbox>
</splitbox>
and so on and so forth
You can grab a copy a the luxor-contrib site @
http://sourceforge.net/project/showfiles.php?group_id=64067 (look for
the swt-layout) package.
Enjoy.
- Gerald
PS: For more info check out the Luxor Website @
http://luxor-xul.sourceforge.net
If you want to discuss the Luxor SWT package please join the
luxor-xul-user mailinglist @
http://lists.sourceforge.net/lists/listinfo/luxor-xul-user
For more info about SWT (Standard Widget Toolkit) check out the
website @ http://www.eclipse.org/swt
- 3
- Java 5.0 Flood!Since J2SE 5.0 has just come out, I'd thought I'd post a some links and
highlights as written by the media around the internet.
---
** Sun ships Java upgrade, focuses on ease of use **
The next release is due out by early 2006
Highlights:
- "J2SE 5.0 is an important step for Java in its ongoing battle against
Microsoft Corp.'s .Net development environment", said Stephen O'Grady, an
analyst at RedMonk Inc. in Bath, Maine. "The streamlined start-up times and
a friendlier graphical user interface should be especially welcome additions
to Java users", he said.
"Particularly for Java applications on the client, it has taken a while for
them to start up," O'Grady said. "That has been a problem. Also, from a
user's perspective, [Sun] has updated the look and feel. It looks good. It's
cleaner, and it's more modern."
http://www.computerworld.com/developmenttopics/development/java/story/0,1080
1,96346,00.html?nas=APP-96346
---
** Sun Releases New Version of Java for Servers, Desktops **
Highlights:
- In addition, Austin said J2SE 5.0 will spark the creation of new tools for
developers, particularly new profiling and analysis tools. "We have a cool
technology called byte code insertion, so now you can profile in real-time."
J2SE 5.0 also enables developers to "pre-template" code, "so other analyzing
tools can read the metadata," he said.
http://www.eweek.com/article2/0,1759,1664580,00.asp
---
** A New Direction for Java **
Highlights:
- The result: "Java's beginning to wend its way into some pretty interesting
places," such as automobiles, said Schwartz. "I asked an automobile
manufacturer, 'What's the price at which, if you could sell online services
to the automobile, you could give away the automobile for free?' Without
batting an eye, that auto company's CFO said, '$220,'" Schwartz told his
JavaOne audience. "Now think about that. "Do you know a 17-year old who
would pay $5 to download a custom horn tone to his car? I do," he said.
- "It's not Sun thinking about putting services into an automobile, it's
Siemens and BMW," Schwartz said, returning to center stage after a
presentation in which a new BMW rolled out with an advanced Java-based
navigation and entertainment system.
http://www.eweek.com/article2/0,1759,1624150,00.asp
---
** Screenshots of J2SE 5.0 Look&Feels **
Windows XP File Chooser Dialog (from j5.0 beta)
http://java.sun.com/developer/technicalArticles/releases/j2se15/15art2.jpg
Redhat Linux File Open Dialog (from j5.0 beta)
http://java.sun.com/developer/technicalArticles/releases/j2se15/15art1.jpg
The new Ocean Theme
http://www.dubh.org/jdevimages/jdev_ocean_large.png
---
Comments on Synth
Synth is apparently a 'bare-bones' L&F designed specifically to allow
non-programmers to turn it into a custom L&F using simple XML. The article
"The Synth Look and Feel" in the next section gets more into the details.
An example XML file is also presented below. For an overview of the idea
behind Swing 5.0 see this article:
** Tiger on the Desktop **
http://weblogs.java.net/blog/chet/archive/2004/09/tiger_on_the_de_1.
** The Synth Look and Feel **
Highlights:
For the anxious, here's a quick example. The following XML code, taken from
example1.xml, defines a style named textfield and binds it to all text
fields in Synth. The result is that text fields look like the one in the
Motivation section.
<synth>
<style id="textfield">
<state>
<color value="white" type="BACKGROUND"/>
</state>
<imagePainter method="textFieldBorder" path="textfieldborder.png"
sourceInsets="5 6 6 7" paintCenter="false"/>
<insets top="5" left="6" bottom="6" right="7"/>
</style>
<bind style="textfield" type="region" key="TextField"/>
</synth>
Here's some code that loads the XML file into Synth and sets the current
look and feel to Synth:
SynthLookAndFeel laf = new SynthLookAndFeel();
laf.load(Example1.class.getResourceAsStream("example1.xml"),
Example1.class);
UIManager.setLookAndFeel(laf);
http://www.javadesktop.org/articles/synth/index.html )
---
l8r, Mike N. Christoff
- 4
- cglib/asm NoClassDefFoundErrorI'm having trouble running the cglib sample KeySample
http://cglib.sourceforge.net/xref/samples/KeySample.html. It compiles
fine, but when I try to run it, I get:
Exception in thread "main" java.lang.NoClassDefFoundError: org/
objectweb/asm/Type
at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:180)
at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66)
at Test.main(Test.java:8)
To ensure asm.jar is definitely in the classpath, I'm running it as:
java -classpath .;$JAVA_HOME/lib;$CGLIB_LIB/cglib-2.1_3.jar;$CGLIB_LIB/
asm.jar;$CGLIB_LIB/aspectwerkz-core-0.10.RC1.jar;$CGLIB_LIB/ant.jar;
$CGLIB_LIB/asm-attrs.jar;$CGLIB_LIB/asm-util.jar;$CGLIB_LIB/jarjar.jar;
$CGLIB_LIB/junit.jar KeySample
The call in net.sf.cglib.core.KeyFactory which is triggering this is:
private static final Type KEY_FACTORY =
TypeUtils.parseType("net.sf.cglib.core.KeyFactory");
The call at net.sf.cglib.core.TypeUtils.parseType is:
public static Type parseType(String s) {
return Type.getType(map(s));
}
map is a private method which effectively transforms the input into
"L"+s.replace('.', '/'))+";" (i.e. "Lnet/sf/cglib/core/KeyFactory;").
I've traced through this with Eclipse, so I'm absolutely certain that
this is what's being passed to Type.getType. Based on the exception
and my trace, I don't think it's getting as far as calling
Type.getType, though.
If I add the lines:
org.objectweb.asm.Type t = Type.getType("Lnet/sf/cglib/core/
KeyFactory;");
System.out.println(t.getClassName());
to the sample code, those lines execute properly (i.e. it prints
"net.sf.cglib.core.KeyFactory"), but then it throws the exception
above.
The fun part is that I get the same result if I re-compile the
original sample code and run with the no-dependency version of cglib:
java -classpath .:$JAVA_HOME/lib:$CGLIB_LIB/cglib-nodep-2.1_3.jar
KeySample
I suspect that there's something truly screwed up with my environment,
but I haven't seen any other overt misbehavior like this. Any ideas?
- 5
- Message IDsRoedy Green wrote:
> Java mail generates message ids like this:
> <25116828.1067897095828.JavaMail.Administrator@roedy>
>
> Eudora like this:
> <email***@***.com>
>
> Just what are these?
>
> 1. are they a hash?
>
> 2. are they supposed to be globally unique.
>
> 3. are they supposed to be the same if you send the same mail twice?
>
> 4. are they a timestamp?
>
From the RFC822 (http://www.faqs.org/rfcs/rfc822.html) is says that:
1) Message-ID is part of the optional-field.
2) chapter 4.6.1:
>>>
4.6.1. MESSAGE-ID / RESENT-MESSAGE-ID
This field contains a unique identifier (the local-part
address unit) which refers to THIS version of THIS message.
The uniqueness of the message identifier is guaranteed by the
host which generates it. This identifier is intended to be
machine readable and not necessarily meaningful to humans. A
message identifier pertains to exactly one instantiation of a
particular message; subsequent revisions to the message should
each receive new message identifiers.
<<<
And each mail client I have used generate a some what unique version
(content and formatting) of this field. I have only seen it used for
thread display as no one seems to heavily rely on it.
You can look into the JavaMail source (part of J2E source) for the
JavaMail generated one.
Minh Tran-Le.
- 6
- native method performance puzzleJust to be clear, I'm afraid that I can't do more than sketch my problem out
here, since it's customer-specific, but I'm hoping for some direction.
I'm testing two implementations of a data-processing API, one in pure Java,
one in native methods (windows dll). The process I am testing is disk I/O
intensive.
Running the same performance test over and over again I've found that the
pure Java implementation gives very consistent results, while the native
method version gives results that steadily get better over about a dozen
runs, finally ending up about the same at the pure Java implementation
(probably ultimately limited by disk thruput).
For example, test 1 might look like:
pure Java method : 12 sec
native method: 20 sec
test 5 like:
pure Java method: 11 sec
native method: 15 sec
test 10 like:
pure Java method: 12 sec
native method: 10 sec
What could be going on here? It sure feels like something is being cached,
but I'm not sure what.
Thanks,
--arne
- 7
- What is a type error?Marshall <email***@***.com> wrote:
+---------------
| Joachim Durchholz wrote:
| > Actually SQL has references - they are called "primary keys", but they
| > are references nevertheless.
|
| I strongly object; this is quite incorrect. I grant you that from the
| 50,000 foot level they appear identical, but they are not.
+---------------
Agreed. The only thing different about "primary" keys from any other
key is uniqueness -- a selection by primary key will return only one
record. Other than that constraint, many databases treat them exactly
the same as non-primary keys [e.g., can form indexes on them, etc.].
+---------------
| To qualify as a reference, there need to be reference and dereference
| operations on the reference datatype; there is no such operation is SQL.
+---------------
Not in "ANSI SQL92", say, but there might be in most SQL databases!
[See below re OIDs. Also, SQL:1999 had a "REF" type that was essentially
and OID.]
+---------------
| Would you say the relational algebra has references?
+---------------
Don't confuse "SQL" & "relational algebra"!! You'll get real
relational algebraists *way* bent out of shape if you do that!
+---------------
| > (Some SQL dialects also offer synthetic "ID" fields that are
| > guaranteed to remain stable over the lifetime of a record.
|
| Primary keys are updatable; there is nothing special about them.
+---------------
I think he's probably talking about "OIDs" (object IDs). Most
current SQL-based databases provide them, usually as a normally-
invisible "system column" that doesn't show up when you say
"SELECT * FROM", but that *does* appear if you say "SELECT oid, *",
and may be used as a "primary" key even on tables with no actual
primary key:
rpw3=# select * from toy limit 4;
c1 | c2 | c3 | upd
--------+-------+--------------------------------+-----
fall | tape | My Favorite Thanksgiving | 16
xmas | book | My Favorite Christmas | 2
xmas | video | The Grinch who Stole Christmas | 4
summer | book | Unusual 4ths of July | 17
(4 rows)
rpw3=# select oid, * from toy limit 4;
oid | c1 | c2 | c3 | upd
-------+--------+-------+--------------------------------+-----
19997 | fall | tape | My Favorite Thanksgiving | 16
19998 | xmas | book | My Favorite Christmas | 2
19999 | xmas | video | The Grinch who Stole Christmas | 4
20000 | summer | book | Unusual 4ths of July | 17
(4 rows)
rpw3=# select * from toy where oid = 19998;
c1 | c2 | c3 | upd
------+------+-----------------------+-----
xmas | book | My Favorite Christmas | 2
(1 row)
rpw3=# insert into toy values ('fall','book','Glory Road');
INSERT 32785 1
rpw3=# select oid, * from toy where oid = 32785;
oid | c1 | c2 | c3 | upd
-------+------+------+------------+-----
32785 | fall | book | Glory Road | 21
(1 row)
rpw3=#
See <http://www.postgresql.org/docs/8.1/static/datatype-oid.html>
for how PostgreSQL treats OIDs [including some critical limitations].
-Rob
-----
Rob Warnock <email***@***.com>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607
- 8
- JSP <jsp:useBean ... /> tag: Difference between 'class' and 'type'Hello,
I'm trying to gain a better understanding of the included tag libraries
with JSP. The <jsp:useBean tag seems farily straightforward, in that it
sets a page variable from an object in any scope, with a variety of options.
I see examples listed that interchange the 'class' and 'type' attribute,
but to me it's not real clear as to their distinction. Can anyone
explain their difference?
One thing I have noticed is that if I don't yet have a variable declared
in the given scope, using the 'type' attribute causes an exception to be
thrown, whereas the 'class' attribute does not. It seems that when I
specify "class", it actually creates a new instance of the specified
variable / bean.
Thanks!!
-Sean
- 9
- Printing Frames With JavascriptI apologize if this is the wrong group for this but I have looked for
an answer with no luck. I have the following frame setup on a site I
am working on:
http://img98.imageshack.us/img98/6238/frameprint1lr.jpg
I want to add a java print button in frame 3 that will then print
frames 3, 4, and 5 when clicked (preferably as laid out on screen in
landscape mode). Is something like this possible?
Thanks.
- 10
- Print via Command LineHello NG.
I'm trying to write a tool which is able to print a PostScript documents via
the command line. The call I'm making is the following:
String s = "copy /b " + filename + " lpt1:";
rt.exec(s);
This is commented by the interpreter as follows:
java.io.IOException: CreateProcess: copy /b
J:\Tmp\KyoceraMita\PostScript\Philipp.prn.tmp lpt1: error=2
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:66)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:566)
at java.lang.Runtime.exec(Runtime.java:428)
at java.lang.Runtime.exec(Runtime.java:364)
at java.lang.Runtime.exec(Runtime.java:326)
at PrintPostScript.print(PrintPostScript.java:82)
at PrintPostScript.main(PrintPostScript.java:38)
Error = 2 means, that the file or something else is missing. The problem is:
The same command typed into my command line (I'm using W2k3) produces the
desired result. What am I doing wrong? Thanks in advance,
Philipp Ciechanowicz
- 11
- SQL Server 2000 -> JDBC Date TimeSeems to me that the problems is in the translation. I recommend that you
do a cast in the request. I.E. Cast '15/07/2005 AS DATETIME)
mlb
- 12
- SWT&JFaceHi,
is there any method to add WizardDialog to windows taskbar?
In general, dialogs don't appear on taskbar, but maybe anyone knows
some trick.
yarecki
- 13
- [OT] eruditionOn 2008-02-12 03:12 +0100, Lew allegedly wrote:
> Daniele Futtorovic wrote:
>> confer:
>> "About Documents"
>> <http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#document>
>
> etc.
>
> That usage of "confer" is marvelous, simply delightful. I was just
> looking up that usage of the word the other day, coincidentally, in the
> context of the abbreviation "cf.". Sheer poetry to see it spelled out.
> Thank you.
>
You're most welcome.
- 14
- JTable selectHello,
Can anybody explain me how I can retrieve the value of a certain
clicked cell of a JTable?
thx
pat
- 15
|
|
|