0

xwikiのカスタム認証クラスを作成しようとしています。

認証メカニズムが記述されたプロジェクトがあり、誰かがxwikiにアクセスしようとした場合、xwikiカスタム認証を使用してプロジェクトのログインページにリダイレクトしたいと思います。

私は自分のプロジェクトとは別にクラスを書き、xwikiとは別に、それをjarとしてパッケージ化し、xwikiプロジェクトのxwiki WEB-INF/libフォルダーに入れようとしています。認証。

問題は、私が書く必要のあるクラスがいくつかのxwikiクラスをインポートすることです。これらのインポートを使用して別のクラスを作成している場合、正しくコンパイルされません。

xwikiのWEB-INF/libフォルダーに入れる必要がある別のクラスである場合、xwikiクラスの一部を拡張するクラスを作成するにはどうすればよいですか?

これは誰かがhttps://www.box.com/shared/9kamt5d9c5を投稿した例です。

簡単な例

package my.xwiki.custom.authentication;

import java.io.*;
import com.xpn.xwiki.XWikiContext;
import com.xpn.xwiki.XWikiException;
import com.xpn.xwiki.user.api.XWikiUser;
import com.xpn.xwiki.user.impl.xiki.XWikiAuthServiceImpl;


public class XWikiSSOImpl extends XWikiAuthServiceImpl {

    @Override
    public XWikiUser checkAuth(XWikiContext context) throws XWikiException {
        System.out.println("we actually in checkAuth?");
    }
}

jarファイルをxwikiに追加して実行すると、次のエラーが発生します。

Detailed information:

    Error number 0 in 11: Uncaught exception
Wrapped Exception: Unresolved compilation problems: 
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    XWikiAuthServiceImpl cannot be resolved to a type
    XWikiUser cannot be resolved to a type
    XWikiContext cannot be resolved to a type
    XWikiException cannot be resolved to a type

com.xpn.xwiki.XWikiException: Error number 0 in 11: Uncaught exception
Wrapped Exception: Unresolved compilation problems: 
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    XWikiAuthServiceImpl cannot be resolved to a type
    XWikiUser cannot be resolved to a type
    XWikiContext cannot be resolved to a type
    XWikiException cannot be resolved to a type

    at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:254)
    at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:116)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.xpn.xwiki.web.ActionFilter.doFilter(ActionFilter.java:120)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.xwiki.wysiwyg.server.filter.ConversionFilter.doFilter(ConversionFilter.java:144)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.xpn.xwiki.plugin.webdav.XWikiDavFilter.doFilter(XWikiDavFilter.java:66)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.xwiki.container.servlet.filters.internal.SavedRequestRestorerFilter.doFilter(SavedRequestRestorerFilter.java:208)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.xwiki.container.servlet.filters.internal.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:111)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.Error: Unresolved compilation problems: 
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    The import com.xpn cannot be resolved
    XWikiAuthServiceImpl cannot be resolved to a type
    XWikiUser cannot be resolved to a type
    XWikiContext cannot be resolved to a type
    XWikiException cannot be resolved to a type

    at my.xwiki.custom.authentication.XWikiSSOImpl <init>(XWikiSSOImpl.java:4)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at java.lang.Class.newInstance0(Class.java:355)
    at java.lang.Class.newInstance(Class.java:308)
    at com.xpn.xwiki.XWiki.getAuthService(XWiki.java:5288)
    at com.xpn.xwiki.XWiki.checkAuth(XWiki.java:4090)
    at com.xpn.xwiki.user.impl.xwiki.XWikiRightServiceImpl.checkAccess(XWikiRightServiceImpl.java:205)
    at com.xpn.xwiki.XWiki.checkAccess(XWiki.java:4103)
    at com.xpn.xwiki.XWiki.prepareDocuments(XWiki.java:5128)
    at com.xpn.xwiki.web.XWikiAction.execute(XWikiAction.java:179)
    ... 34 more
4

2 に答える 2

2

提供されたリンクに基づいて、インポートが欠落しているようには見えず、明らかな構文エラーがないと仮定すると、開発環境を示しています。典型的な解決策は、パッケージへのパスを使用してCLASSPATH変数を設定することですが、これは私の経験ではエラーが発生しやすいものです。

Eclipseを使用している場合は、プロジェクト名を右クリックしてプロパティを選択します。プロパティダイアログで、左側の「Javaビルドパス」をクリックします。「Javaビルドパス」プロパティ内で、「ライブラリ」タブをクリックします。xwikijarへのパスを指定する[外部jarの追加...]ボタンをクリックします。

これは私の含まれているjarファイルが私のプロジェクトで見ているものです...

于 2012-09-14T20:08:56.993 に答える
1

クラスをコンパイルするには、コンパイラーはすべての参照クラス(スーパークラスを含む)の定義を必要とします。すでにコンパイルされているクラス(.classファイルまたはJARファイルから)を使用することも、これらのクラスをソースからコンパイルすることもできます。xwikiクラスをコンパイルしたくないので、前者をコンパイルしたいと思うでしょう。

したがって、これらのクラスを含むjarファイルをクラスパスに追加する必要があります。これを行う方法は、コンパイラーの呼び出し方法または使用するIDEによって異なります。Eclipseを使用する場合は、プロジェクトを右クリック->[ビルドパス]->[外部アーカイブの追加]を選択します。をjavac使用すると、オプションを使用でき-cpます。

于 2012-09-14T19:59:58.850 に答える