我想我现在真的坚持了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) 所以我到目前为止用于在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度时会发生什么(实际上应该以透明蓝色旋转)
我错过了什么吗?所有帮助将不胜感激.
我正在运行带有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) 我已经完全按照教程进行了操作,但似乎无法正常工作。本教程位于以下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 …
我正在使用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) 我必须在这里遗漏一些明显的东西...我正在尝试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属性也不起作用。
为了清楚起见:
值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的
我有一个非常基本的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) 我想在javafx中将文本绘制到球体上。
我尝试将其纯粹保留为javafx。我正在使用PerspectiveCamera。
一种选择是仅绘制3D文本(如果存在),使其接触球体并与查看者平行以提高可读性。更好的选择是将弯曲的文本直接绘制在球体上,同时也面向观察者。
我所在的团队正在构建一个使用 JavaFX 8 3D 操作视觉模型的应用程序。我们同时使用透视相机和平行相机。透视相机按预期工作。目前正在使用isEyeAtCameraZerofalse。这样做是为了最大限度地兼容并行相机。
调用camera.setNearClip()和时,透视相机会正确运行。camera.setFarClip()
并行相机似乎没有响应camera.setNearClip()和camera.setFarClip()。并行相机确实执行近距和远距剪切,但我无法更改并行相机剪切范围。
我正在使用基于 JavaFX 8 javadocs 页面上的伪代码的算法来计算传递到和 的Camera值。这似乎适用于透视相机,但不适用于平行相机。camera.setNearClip()camera.setFarClip()
任何人都可以提供有关如何管理并行相机的剪辑范围的建议吗?
我是JavaFX和Java的新手.我想知道如何在立方体或任何多面体的表面上制作场景?我想在任何3D形状的表面上播放视频.我怎么能这样做?
javafx ×8
java ×6
javafx-11 ×5
javafx-3d ×4
3d ×3
java-11 ×2
annotations ×1
camera ×1
clipping ×1
java-platform-module-system ×1
javafx-8 ×1
jax-ws ×1
openjfx ×1
quaternions ×1
sdk ×1
text ×1
tomcat7 ×1
video ×1
web-services ×1