java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jface.text.TextSelection [message #905418] |
Thu, 30 August 2012 10:55 |
zhang lei Messages: 22 Registered: July 2012 |
Junior Member |
|
|
I am learing the Jface in action.in the chapter 5,I get a mistake that annoyed me.I'm gettting the below error, please help me on this.
java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jface.text.TextSelection
at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2701)
at org.eclipse.jface.text.TextViewer$5.run(TextViewer.java:2682)
at org.eclipse.swt.widgets.Display.runTimer(Unknown Source)
at org.eclipse.swt.widgets.Display.messageProc(Unknown Source)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at com.swtjface.Ch2.WidgetWindow.main(WidgetWindow.java:48)
the main class CompViewer
import org.eclipse.jface.window.*;
import org.eclipse.swt.widgets.*;
public class CompViewer extends ApplicationWindow
{
public CompViewer()
{
super(null);
}
protected Control createContents(Composite parent)
{
Ch5CompletionEditor cc1 = new Ch5CompletionEditor(parent);
return parent;
}
public static void main(String[] args)
{
CompViewer cv = new CompViewer();
cv.setBlockOnOpen(true);
cv.open();
Display.getCurrent().dispose();
}
}
import java.util.StringTokenizer;
import org.eclipse.jface.text.*;
import org.eclipse.jface.text.contentassist.ContentAssistant;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
public class Ch5CompletionEditor extends Composite
{
private TextViewer textViewer;
private WordTracker wordTracker;
private static final int MAX_QUEUE_SIZE = 200;
public Ch5CompletionEditor(Composite parent)
{
super(parent, SWT.NULL);
wordTracker = new WordTracker(MAX_QUEUE_SIZE);
buildControls();
}
private void buildControls()
{
setLayout(new FillLayout());
textViewer = new TextViewer(this, SWT.MULTI | SWT.V_SCROLL);
textViewer.setDocument(new Document());
final ContentAssistant assistant = new ContentAssistant();
assistant.setContentAssistProcessor(
new RecentWordContentAssistProcessor(wordTracker),
IDocument.DEFAULT_CONTENT_TYPE);
assistant.install(textViewer);
textViewer.getControl().addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e)
{
switch(e.keyCode)
{
case SWT.F1:
assistant.showPossibleCompletions();
break;
default:
//ignore everything else
}
}
});
textViewer.addTextListener(new ITextListener() {
public void textChanged(TextEvent e)
{
if(isWhitespaceString(e.getText()))
{
wordTracker.add(findMostRecentWord(e.getOffset() - 1));
}
}
});
}
protected String findMostRecentWord(int startSearchOffset)
{
System.out.println("findMostRecentWord()");
int currOffset = startSearchOffset;
char currChar;
String word = "";
try
{
while(currOffset > 0
&& !Character.isWhitespace(
currChar = textViewer.getDocument()
.getChar(currOffset)
))
{
word = currChar + word;
currOffset--;
}
return word;
}
catch (BadLocationException e)
{
e.printStackTrace();
return null;
}
}
protected boolean isWhitespaceString(String string)
{
StringTokenizer tokenizer = new StringTokenizer(string);
//if there is at least 1 token, this string is not whitespace
return !tokenizer.hasMoreTokens();
}
}
import java.util.*;
public class WordTracker
{
private int maxQueueSize;
private List wordBuffer;
private Map knownWords = new HashMap();
public WordTracker(int queueSize)
{
maxQueueSize = queueSize;
wordBuffer = new LinkedList();
}
public int getWordCount()
{
return wordBuffer.size();
}
public void add(String word)
{
if( wordIsNotKnown(word) )
{
flushOldestWord();
insertNewWord(word);
}
}
private void insertNewWord(String word)
{
wordBuffer.add(0, word);
knownWords.put(word, word);
}
private void flushOldestWord()
{
if( wordBuffer.size() == maxQueueSize )
{
String removedWord =
(String)wordBuffer.remove(maxQueueSize - 1);
knownWords.remove(removedWord);
}
}
private boolean wordIsNotKnown(String word)
{
return knownWords.get(word) == null;
}
public List suggest(String word)
{
List suggestions = new LinkedList();
for( Iterator i = wordBuffer.iterator(); i.hasNext(); )
{
String currWord = (String)i.next();
if( currWord.startsWith(word) )
{
suggestions.add(currWord);
}
}
return suggestions;
}
}
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.text.*;
import org.eclipse.jface.text.contentassist.*;
public class RecentWordContentAssistProcessor
implements IContentAssistProcessor
{
private String lastError = null;
private IContextInformationValidator contextInfoValidator;
private WordTracker wordTracker;
public RecentWordContentAssistProcessor(WordTracker tracker)
{
super();
contextInfoValidator = new ContextInformationValidator(this);
wordTracker = tracker;
System.out.println("RecentWordContentAssistProcessor()");
}
public ICompletionProposal[] computeCompletionProposals(
ITextViewer textViewer,
int documentOffset)
{
System.out.println("computeCompletionProposals()");
IDocument document = textViewer.getDocument();
int currOffset = documentOffset - 1;
try
{
String currWord = "";
char currChar;
while( currOffset > 0
&& !Character.isWhitespace(
currChar = document.getChar(currOffset)) )
{
currWord = currChar + currWord;
currOffset--;
}
List suggestions = wordTracker.suggest(currWord);
ICompletionProposal[] proposals = null;
if(suggestions.size() > 0)
{
proposals = buildProposals(suggestions, currWord,
documentOffset - currWord.length());
lastError = null;
}
return proposals;
}
catch (BadLocationException e)
{
e.printStackTrace();
lastError = e.getMessage();
return null;
}
}
private ICompletionProposal[] buildProposals(List suggestions,
String replacedWord,
int offset)
{
ICompletionProposal[] proposals =
new ICompletionProposal[suggestions.size()];
int index = 0;
for(Iterator i = suggestions.iterator(); i.hasNext();)
{
String currSuggestion = (String)i.next();
proposals[index] = new CompletionProposal(
currSuggestion,
offset,
replacedWord.length(),
currSuggestion.length());
index++;
}
return proposals;
}
public IContextInformation[] computeContextInformation(
ITextViewer textViewer,
int documentOffset)
{
lastError = "No Context Information available";
return null;
}
public char[] getCompletionProposalAutoActivationCharacters()
{
//we always wait for the user to explicitly trigger completion
return null;
}
public char[] getContextInformationAutoActivationCharacters()
{
//we have no context information
return null;
}
public String getErrorMessage()
{
return lastError;
}
public IContextInformationValidator getContextInformationValidator()
{
return contextInfoValidator;
}
}
-
Attachment: Ch5.rar
(Size: 3.13KB, Downloaded 282 times)
[Updated on: Thu, 30 August 2012 10:58] Report message to a moderator
|
|
|
|
Re: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.jface.text.TextSelection [message #905475 is a reply to message #905418] |
Thu, 30 August 2012 12:51 |
Oliver Koch Messages: 40 Registered: June 2012 |
Member |
|
|
Am 30.08.2012 12:55, schrieb zhang lei:
> I am learing the Jface in action.in the chapter 5,I get a mistake that
> annoyed me.I'm gettting the below error, please help me on this.
> java.lang.NoClassDefFoundError: Could not initialize
> class org.eclipse.jface.text.TextSelection
> at
> org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer.java:2701)
>
> at org.eclipse.jface.text.TextViewer$5.run(TextViewer.java:2682)
> at org.eclipse.swt.widgets.Display.runTimer(Unknown Source)
> at org.eclipse.swt.widgets.Display.messageProc(Unknown Source)
> at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
> at org.eclipse.swt.internal.win32.OS.DispatchMessage(Unknown Source)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
> at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
> at org.eclipse.jface.window.Window.open(Window.java:801)
> at com.swtjface.Ch2.WidgetWindow.main(WidgetWindow.java:48)
> the main class CompViewer
>
>
> import org.eclipse.jface.window.*;
> import org.eclipse.swt.widgets.*;
> public class CompViewer extends ApplicationWindow {
> public CompViewer() {
> super(null);
> }
> protected Control createContents(Composite parent) {
> Ch5CompletionEditor cc1 = new Ch5CompletionEditor(parent);
> return parent;
> }
> public static void main(String[] args) {
> CompViewer cv = new CompViewer();
> cv.setBlockOnOpen(true);
> cv.open();
> Display.getCurrent().dispose();
> }
> }
>
>
>
> import java.util.StringTokenizer;
> import org.eclipse.jface.text.*;
> import org.eclipse.jface.text.contentassist.ContentAssistant;
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.events.KeyAdapter;
> import org.eclipse.swt.events.KeyEvent;
> import org.eclipse.swt.layout.FillLayout;
> import org.eclipse.swt.widgets.Composite;
> public class Ch5CompletionEditor extends Composite
> {
> private TextViewer textViewer;
> private WordTracker wordTracker;
> private static final int MAX_QUEUE_SIZE = 200;
> public Ch5CompletionEditor(Composite parent)
> {
> super(parent, SWT.NULL);
> wordTracker = new WordTracker(MAX_QUEUE_SIZE);
> buildControls();
> }
> private void buildControls()
> {
> setLayout(new FillLayout());
> textViewer = new TextViewer(this, SWT.MULTI | SWT.V_SCROLL);
> textViewer.setDocument(new Document()); final ContentAssistant
> assistant = new ContentAssistant();
> assistant.setContentAssistProcessor(
> new RecentWordContentAssistProcessor(wordTracker),
> IDocument.DEFAULT_CONTENT_TYPE);
> assistant.install(textViewer);
> textViewer.getControl().addKeyListener(new KeyAdapter() {
> public void keyPressed(KeyEvent e)
> {
> switch(e.keyCode)
> {
> case SWT.F1:
> assistant.showPossibleCompletions(); break;
> default:
> //ignore everything else
> }
> }
> });
> textViewer.addTextListener(new ITextListener() {
> public void textChanged(TextEvent e)
> {
> if(isWhitespaceString(e.getText())) {
> wordTracker.add(findMostRecentWord(e.getOffset() - 1));
> }
> }
> });
> }
> protected String findMostRecentWord(int startSearchOffset)
> {
> System.out.println("findMostRecentWord()");
> int currOffset = startSearchOffset;
> char currChar;
> String word = "";
> try
> {
> while(currOffset > 0
> && !Character.isWhitespace(
> currChar = textViewer.getDocument()
> .getChar(currOffset)
> ))
> {
> word = currChar + word;
> currOffset--;
> }
> return word;
> }
> catch (BadLocationException e)
> {
> e.printStackTrace();
> return null;
> }
> }
> protected boolean isWhitespaceString(String string)
> {
> StringTokenizer tokenizer = new StringTokenizer(string);
> //if there is at least 1 token, this string is not whitespace
> return !tokenizer.hasMoreTokens();
> }
> }
>
>
>
> import java.util.*;
> public class WordTracker
> {
> private int maxQueueSize;
> private List wordBuffer;
> private Map knownWords = new HashMap();
>
> public WordTracker(int queueSize)
> {
> maxQueueSize = queueSize;
> wordBuffer = new LinkedList();
> }
> public int getWordCount()
> {
> return wordBuffer.size();
> }
> public void add(String word)
> {
> if( wordIsNotKnown(word) )
> {
> flushOldestWord();
> insertNewWord(word);
> }
> }
> private void insertNewWord(String word)
> {
> wordBuffer.add(0, word);
> knownWords.put(word, word);
> }
> private void flushOldestWord()
> {
> if( wordBuffer.size() == maxQueueSize )
> {
> String removedWord =
> (String)wordBuffer.remove(maxQueueSize - 1);
> knownWords.remove(removedWord);
> }
> }
> private boolean wordIsNotKnown(String word)
> {
> return knownWords.get(word) == null;
> }
> public List suggest(String word)
> {
> List suggestions = new LinkedList();
> for( Iterator i = wordBuffer.iterator(); i.hasNext(); )
> {
> String currWord = (String)i.next();
> if( currWord.startsWith(word) )
> {
> suggestions.add(currWord);
> }
> }
> return suggestions;
> }
> }
>
>
>
> import java.util.Iterator;
> import java.util.List;
>
> import org.eclipse.jface.text.*;
> import org.eclipse.jface.text.contentassist.*;
>
> public class RecentWordContentAssistProcessor
> implements IContentAssistProcessor
> {
> private String lastError = null;
> private IContextInformationValidator contextInfoValidator;
> private WordTracker wordTracker;
> public RecentWordContentAssistProcessor(WordTracker tracker)
> {
> super();
> contextInfoValidator = new ContextInformationValidator(this);
> wordTracker = tracker;
> System.out.println("RecentWordContentAssistProcessor()");
> }
> public ICompletionProposal[] computeCompletionProposals(
> ITextViewer textViewer,
> int documentOffset)
> {
> System.out.println("computeCompletionProposals()");
> IDocument document = textViewer.getDocument();
> int currOffset = documentOffset - 1;
> try
> {
> String currWord = "";
> char currChar;
> while( currOffset > 0 && !Character.isWhitespace(
> currChar = document.getChar(currOffset)) )
> {
> currWord = currChar + currWord;
> currOffset--; }
> List suggestions = wordTracker.suggest(currWord);
> ICompletionProposal[] proposals = null;
> if(suggestions.size() > 0)
> {
> proposals = buildProposals(suggestions, currWord,
> documentOffset - currWord.length());
> lastError = null;
> }
> return proposals;
> }
> catch (BadLocationException e)
> {
> e.printStackTrace();
> lastError = e.getMessage();
> return null;
> }
> }
> private ICompletionProposal[] buildProposals(List suggestions,
> String replacedWord,
> int offset)
> {
> ICompletionProposal[] proposals = new
> ICompletionProposal[suggestions.size()];
> int index = 0;
> for(Iterator i = suggestions.iterator(); i.hasNext();)
> {
> String currSuggestion = (String)i.next();
> proposals[index] = new CompletionProposal(
> currSuggestion,
> offset,
> replacedWord.length(),
> currSuggestion.length());
> index++;
> }
> return proposals;
> }
> public IContextInformation[] computeContextInformation(
> ITextViewer textViewer,
> int documentOffset)
> {
> lastError = "No Context Information available";
> return null;
> }
> public char[] getCompletionProposalAutoActivationCharacters()
> {
> //we always wait for the user to explicitly trigger completion
> return null;
> }
> public char[] getContextInformationAutoActivationCharacters()
> {
> //we have no context information
> return null;
> }
> public String getErrorMessage()
> {
> return lastError;
> }
> public IContextInformationValidator
> getContextInformationValidator()
> {
> return contextInfoValidator;
> }
> }
>
If this is an eclipse-based application you might want to check if all
bundles can be resolved.
Another way to tackle the problem is to press Ctrl+Shift+T and enter
org.eclipse.jface.text.TextSelection to search for the class in your
target platform. Then you can find the plug-in that you are missing
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03011 seconds