我在我的应用程序中使用freemarker模板
在将我的应用程序部署到jar文件之前,我需要做的就是加载我的模板: cfg.setDirectoryForTemplateLoading(new File("templates"));
其中加载了我在项目中创建的模板文件夹中的所有模板.
现在,在转移到maven并将我的应用程序部署到可执行jar之后.应用程序无法再找到此文件夹(我已在.jar文件中检查,并且"templates"文件夹已部署在根目录中)
我已经尝试过我所知道的一切,但没有运气.
我现在应该如何加载我的所有模板?(我假设如果我将文件夹放在.jar文件之外但在同一目录中它将起作用.但这不是我想要的.)
谢谢.
我得到RGB24字节数组,并希望用Java显示它.
public void getByteArray(byte byteArray[]){
int count1 = 0;
byte temp1 = 0;
for (int i = 0; i < byteArray.length; i++) { //The order of RGB24 is red,green and blue.Change the
//order to blue,green and red so that java can use TYPE_3BYTE_BGR to recognize it
if (count1 == 0) {
temp1 = byteArray[i];
count1++;
} else if(count1 == 1) {
//do nothing
count1++;
} else if(count1 == 2) {
byteArray[i - 2] = byteArray[i];
byteArray[i] = temp1;
count1=0;
} …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spring Data JPA,我想封装一个执行特定 SQL 的方法。我在以下事项中这样做:
@Component
public interface UserRepository extends CrudRepository<User, String> {
@Query(
value = "delete from User u where u.alias = :alias",
nativeQuery = true
)
void deleteUserByAlias(@Param("alias") String alias);
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到了以下消息:
{
"timestamp": "2018-12-11T15:54:54.627+0000",
"status": 500,
"error": "Internal Server Error",
"message": "could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet",
"path": "/user/delete"
}
Run Code Online (Sandbox Code Playgroud)
那么问题出在哪里呢?
我想制作一个圆形矩形JTextField.我写了一个AbstractBorder的子类来实现它.但是我遇到了一些问题.我的要求是:

我得到的是:

我的代码是:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.AbstractBorder;
import javax.swing.border.EmptyBorder;
public class JTextFieldTest {
JTextField textField;
boolean activate = false;
public void createUI(){
JFrame frame = new JFrame("Test JTextField");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
MainPanel mainPanel = new MainPanel();
frame.add(mainPanel,BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
JTextFieldTest jTextFieldTest = new JTextFieldTest();
jTextFieldTest.createUI();
}
@SuppressWarnings("serial") …Run Code Online (Sandbox Code Playgroud) 如果用户关注当前窗口并按下某个键,我将打印相关信息。但是,它适用于某些键,例如“a”,但不适用于“tab”。这是一个简单的演示:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class KeyBindingTest {
public static void main(String[] args) {
KeyBindingTest test = new KeyBindingTest();
test.createUI();
}
public void createUI(){
JFrame frame = new JFrame("KeyBinding Test");
MainPanel mainPanel = new MainPanel();
frame.add(mainPanel,BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
class MainPanel extends JPanel{
public MainPanel(){
setPreferredSize(new Dimension(200, 200));
//========================key binding============================
requestFocusInWindow();
String aString = "aStr";
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, 0), aString);
getActionMap().put(aString, new AbstractAction() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的演示.如果在mainPanel上触发特定键Stroke事件,将显示消息"a is typed".但是,按下主面板下方的按钮后,它不起作用.这是KeybindingTest类及其内部类:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class KeybindingTest {
private JFrame frame;
private MainPanel mainPanel;
private ButtonPanel buttonPanel;
public static void main(String[] args) {
KeybindingTest test = new KeybindingTest();
test.createUI();
}
public void createUI(){
frame = new JFrame("Keybing Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainPanel = new MainPanel();
buttonPanel = new ButtonPanel();
frame.add(mainPanel,BorderLayout.CENTER);
frame.add(buttonPanel,BorderLayout.SOUTH);
KeybindingListener.getInstance().keybinding(mainPanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
class MainPanel extends JPanel{
@Override
public Dimension getPreferredSize() {
// …Run Code Online (Sandbox Code Playgroud) 我有一个父窗口,它将启动另一个窗口.当子窗口启动时,我希望它显示为模式对话框.
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ModalDialogTest {
public void createUI(){
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
JPanel mainPanel = new JPanel();
mainPanel.setBorder(BorderFactory.createEmptyBorder(200, 200, 200, 200));
JButton openButton = new JButton("Open a frame");
openButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
AnotherWindow anotherWindow = new AnotherWindow();
anotherWindow.createUI();
}
});
mainPanel.add(openButton,BorderLayout.CENTER);
frame.add(mainPanel,BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) …Run Code Online (Sandbox Code Playgroud) 我希望字符串具有不同的宽度,以便我设置Graphics2D的笔划,代码在这里:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class StrokeTest {
public static void main(String[] args) {
StrokeTest test = new StrokeTest();
test.createUI();
}
public void createUI(){
JFrame frame = new JFrame();
frame.add(new MainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
class MainPanel extends JPanel{
public MainPanel(){
setPreferredSize(new Dimension(400, 300));
}
protected void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.red);
g2d.setStroke(new BasicStroke(10));
g2d.drawString("I am a string", 100, 100);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用g2d.setStroke(new BasicStroke(10)) …
我正在做一些关于spark_with_hadoop2.7(2.4.3),hadoop(3.2.0)和Ceph luminous的组合的事情。当我尝试使用spark访问ceph时(例如,spark-sql在shell上启动),出现如下异常:
INFO impl.MetricsSystemImpl: s3a-file-system metrics system started
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.security.ProviderUtils.excludeIncompatibleCredentialProviders(Lorg/apache/hadoop/conf/Configuration;Ljava/lang/Class;)Lorg/apache/hadoop/conf/Configuration;
at org.apache.hadoop.fs.s3a.S3AUtils.getAWSAccessKeys(S3AUtils.java:740)
at org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider.<init>(SimpleAWSCredentialsProvider.java:58)
at org.apache.hadoop.fs.s3a.S3AUtils.createAWSCredentialProviderSet(S3AUtils.java:600)
Run Code Online (Sandbox Code Playgroud)
对于NoSuchMethodError,这很可能是因为根据how-do-i-fix-a-nosuchmethoderror编译的类版本与运行的类版本不同。
要访问,
实际上使用了Cephaws相关的jaraws-java-sdk-bundle-1.11.375.jar及其hadoop-aws-3.2.0.jar下的文件。$HADOOP_HOME/share/hadoop/tools/lib我做了以下操作:
1、将这两个jar复制到$SPARK_HOME/jars
2、修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh添加以下语句:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*
通过执行上述步骤,我可以启动 hdfs 来访问 ceph,例如,我可以用来hdfs dfs -ls列出 ceph 存储桶下的文件夹。它证明与aws相关的jar工作正常。(正如我的理解)。
但是为什么当我调用 Spark 时会抛出有关 aws s3a 的异常?
作为主题如何附加到文件?,大多数答案是关于打开一个文件并附加到它,例如:
def FileSave(content):
with open(filename, "a") as myfile:
myfile.write(content)
FileSave("test1 \n")
FileSave("test2 \n")
Run Code Online (Sandbox Code Playgroud)
为什么我们不提取myfile,只在FileSave调用时写入它.
global myfile
myfile = open(filename)
def FileSave(content):
myfile.write(content)
FileSave("test1 \n")
FileSave("test2 \n")
Run Code Online (Sandbox Code Playgroud)
后一个代码是否更好导致它只打开文件一次并多次写入?或者,没有区别因为python中的内容只保证文件只打开一次,尽管open多次调用该方法.
java ×8
awt ×6
swing ×6
key-bindings ×2
apache-spark ×1
ceph ×1
focus ×1
fonts ×1
freemarker ×1
hadoop ×1
jtextfield ×1
maven ×1
python ×1
rgb ×1
spring ×1
stroke ×1
teamcity ×1