小编Jos*_*eda的帖子

注释@RolesAllowed不适用于Tomcat 7.0.32中部署的Web Service

我想我现在真的坚持了4个小时.我有一个在JAX-WS中开发的示例Web服务,我已经在web.xml中成功配置了BASIC身份验证,但我无法让"@RolesAllowed"的消息工作.这个注释被简单地忽略了.我正在使用servlet 3.0 API和tomcat 7.0.32,所以我认为应该支持@RolesAllowed.

以下是我的代码:在Web.xml中,我有以下配置:

<security-constraint>
    <display-name>SecurityConstraint</display-name>
    <web-resource-collection>
        <web-resource-name>ApexeWebServiceCollection</web-resource-name>
        <description>These resources are only accessible by authorised client.</description>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <description>These are the roles who have access.</description>
        <role-name>developer</role-name>
        <role-name>tester</role-name>
    </auth-constraint>
    <user-data-constraint>
        <description>This is how the user data must be transmitted.</description>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>default</realm-name>
</login-config>
<security-role>
    <description>Service developer</description>
    <role-name>developer</role-name>
</security-role>
<security-role>
    <description>Service tester</description>
    <role-name>tester</role-name>
</security-role>
Run Code Online (Sandbox Code Playgroud)

然后我在服务端实现了以下方法.我想要方法:"sayNumber"只能由"developer"访问,而不是"tester":

@SchemaValidation(handler = SchemaValidationErrorHandler.class)@WebService(endpointInterface ="com.webservice.HelloWorld")

公共类HelloWorldImpl实现HelloWorld {

@Resource
WebServiceContext wsContext;

@Override
@WebMethod
@RolesAllowed("developer")
public int sayNumber(double number) throws SOAPException {
    MessageContext …
Run Code Online (Sandbox Code Playgroud)

java annotations web-services jax-ws tomcat7

6
推荐指数
0
解决办法
933
查看次数

在JavaFX中正确旋转3轴上的3D对象

所以我到目前为止用于在JavaFX中旋转对象的方法是我将它分成3组,每组都附加一个Rotate并锁定到单个轴,如下所示:

    Rotate heading, roll, pitch;
    Group normalrotate, rollrotate, verticalrotate;

    heading.setAxis(new Point3D(0,1,0));
    normalrotate.getTransforms().add(heading);

    roll.setAxis(new Point3D(0,0,1));
    rollrotate.getTransforms().add(roll);

    pitch.setAxis(new Point3D(1,0,0));
    verticalrotate.getTransforms().add(pitch);
Run Code Online (Sandbox Code Playgroud)

并且每次我需要旋转对象时都会执行setAngle().这对于前进和滚动非常有效,直到我决定我也需要投球.现在很多OpenGL等教程都说旋转的matix或四元数最适合这种类型的旋转,但是javadoc缺少任何有用的数据.

示例:当我在y轴上旋转对象180度时会发生什么(实际上应该以透明蓝色旋转) 在此输入图像描述 我错过了什么吗?所有帮助将不胜感激.

java 3d javafx quaternions javafx-3d

6
推荐指数
1
解决办法
4381
查看次数

IntelliJ IDEA - 错误:缺少JavaFX运行时组件,并且需要运行此应用程序

我正在运行带有JDK 11.0.1的IntelliJ IDEA Ultimate 2018.2.5来自OpenJFX的JavaFX 11.我知道这是一个常见的错误,我尝试了很多提议的修复,但没有任何作用.

无论我尝试运行哪个JavaFX项目,都会收到错误消息:

Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)

如果我将以下内容添加到VM选项中

 --module-path="C:\Program Files\Java\javafx-sdk-11\lib" --add-modules=javafx.controls
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

Exception in Application start method
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-11

6
推荐指数
1
解决办法
2万
查看次数

结合使用JavaFX和Intellij IDEA

我已经完全按照教程进行了操作,但似乎无法正常工作。本教程位于以下JavaFX and Intellij Non-modular from IDE部分中:https : //openjfx.io/openjfx-docs/#install-java

这是尝试运行默认的Intellij Idea JavaFX项目时收到的错误消息:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found

Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)

正如我在侧边栏javafx.base下方看到的那样,这对我来说毫无意义lib在此处输入图片说明

通往jdk-11.0.1和的路径javafx-sdk-11.0.1

C:\ Program Files \ Java …

java javafx intellij-idea javafx-11

6
推荐指数
1
解决办法
1万
查看次数

找不到javafx.controls JavaFX 11 / JDK 11.0.1

我正在使用InteliJ,已经研究了似乎对其他所有人都适用的所有其他解决方案。我收到一个错误:

Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in unnamed module @0x5782d366) cannot access class com.sun.javafx.util.Utils (in module javafx.graphics) because module javafx.graphics does not export com.sun.javafx.util to unnamed module @0x5782d366
Run Code Online (Sandbox Code Playgroud)

然后,将以下内容添加到运行配置中的VM选项:

--module-path="C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib" \ 
    --add-modules=javafx.controls \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)

那似乎可以部分解决问题?但是,当我尝试运行此代码时,我没有得到完整的堆栈错误痕迹,我得到了以下三行:

"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" \
    --module-path=C:\Users\mresp_000\Desktop\Business\Code\SDKS\javafx-sdk-11.0.1\lib \
    --add-modules=javafx.controls,javafx.fxml \
    --add-exports=javafx.graphics/com.sun.javafx.util=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.reflect=ALL-UNNAMED \
    --add-exports=javafx.base/com.sun.javafx.beans=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.glass.utils=ALL-UNNAMED \
    --add-exports=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED \
    --add-modules javafx.base,javafx.graphics \
    --add-reads javafx.base=ALL-UNNAMED \
    --add-reads javafx.graphics=ALL-UNNAMED \
    "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3\lib\idea_rt.jar=60572:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.3\bin" …
Run Code Online (Sandbox Code Playgroud)

java sdk javafx openjfx javafx-11

6
推荐指数
1
解决办法
4634
查看次数

带有VSCode的JavaFX-11

我必须在这里遗漏一些明显的东西...我正在尝试VSCode(来自Eclipse),但是我无法获得VSCode来查看JavaFX11库。在import语句中,标记了对JavaFX组件的所有引用:

[Java] The import javafx cannot be resolved
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,这由“用户库”处理,该库在.classpath中生成一个条目

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11">
    <attributes>
        <attribute name="module" value="true"/>
    </attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)

尽管VSCode似乎可以从Eclipse理解.classpath的其余部分,但它不理解这一点。用磁盘上的实际位置替换path属性也不起作用。

为了清楚起见:

  • 这个问题专门与Java 11有关。在早期的Java版本中,JavaFX是JDK的一部分。在Java 11中,它已移至一组外部模块。
  • 我不想使用Maven或Gradle。我需要不使用构建工具直接引用模块。

值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的

javafx visual-studio-code java-11 javafx-11

6
推荐指数
1
解决办法
8830
查看次数

了解主类如何影响JPMS

我有一个非常基本的JavaFX应用程序,如果Application类不是 Main类,它可以完美地工作:

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;

public class Main {

    public static void main(String[] args) {
        Application.launch(App.class, args);
    }

}

public class App extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // works
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我将两者合并在一起时(这是大多数教程中推荐的方式,包括OpenJFX的官方文档),模块系统抛出IllegalAccessError(至少在OpenJDK 11.0.2上):

public class MainApp extends Application {

    @Override
    public void start(Stage primaryStage) {
        FXMLLoader loader = new FXMLLoader(); // throws IllegalAccessError
    }

    public static void main(String[] args) {
        launch(MainApp.class, args);
    } …
Run Code Online (Sandbox Code Playgroud)

java javafx java-platform-module-system java-11 javafx-11

6
推荐指数
1
解决办法
103
查看次数

如何在javafx中的球体上绘制文本

我想在javafx中将文本绘制到球体上。

我尝试将其纯粹保留为javafx。我正在使用PerspectiveCamera

一种选择是仅绘制3D文本(如果存在),使其接触球体并与查看者平行以提高可读性。更好的选择是将弯曲的文本直接绘制在球体上,同时也面向观察者。

text javafx javafx-3d

6
推荐指数
2
解决办法
91
查看次数

JavaFX 8 - 如何在并行相机上设置NearClip和FarClip?

我所在的团队正在构建一个使用 JavaFX 8 3D 操作视觉模型的应用程序。我们同时使用透视相机和平行相机。透视相机按预期工作。目前正在使用isEyeAtCameraZerofalse。这样做是为了最大限度地兼容并行相机。

调用camera.setNearClip()和时,透视相机会正确运行。camera.setFarClip()

并行相机似乎没有响应camera.setNearClip()camera.setFarClip()。并行相机确实执行近距和远距剪切,但我无法更改并行相机剪切范围。

我正在使用基于 JavaFX 8 javadocs 页面上的伪代码的算法来计算传递到和 的Camera值。这似乎适用于透视相机,但不适用于平行相机。camera.setNearClip()camera.setFarClip()

任何人都可以提供有关如何管理并行相机的剪辑范围的建议吗?

3d camera clipping javafx-8 javafx-3d

5
推荐指数
1
解决办法
1474
查看次数

如何使用JavaFX在3D形状上播放视频?

我是JavaFX和Java的新手.我想知道如何在立方体或任何多面体的表面上制作场景?我想在任何3D形状的表面上播放视频.我怎么能这样做?

3d video javafx javafx-3d

5
推荐指数
3
解决办法
1934
查看次数