我创建了一个使用SQLite作为本地数据库的Swing应用程序.数据库文件位于项目的根目录中.
Project/DatabaseFile
Run Code Online (Sandbox Code Playgroud)
应用程序在Eclipse上运行良好,但是当我运行打包的可执行文件Jar时,我收到以下错误:
No such table : table1
Run Code Online (Sandbox Code Playgroud)
这意味着无法访问数据库.当我检查生成的JAR文件的内容时,数据库文件不再存在.
在代码中,我将数据库链接如下:
jdbc:sqlite:DatabaseFile
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何将SQLite数据库包含在可执行的Jar中?
编辑
当我将DB文件放在源文件夹中Project/src/DatabaseFile
并将路径更改为时jdbc:sqlite:src/DatabaseFile
,它在Eclipse上运行,但在运行Jar文件时再次运行java -jar Project.jar
.它说:
path to 'src/DatabaseFile': 'C:\Users\name\src' does not exist
Run Code Online (Sandbox Code Playgroud)
我想我需要为数据库指定一个相对路径.
编辑
这是我连接数据库的方式:
public Connection getConnection(){
try{
Class.forName("org.sqlite.JDBC").newInstance();
con = DriverManager.getConnection("jdbc:sqlite:src/DatabaseFile");
} catch (Exception e) {
Log.fatal("Méthode: getConnection() | Class : SQLiteConnection | msg system : " + e.getMessage());
}
return con;
}
Run Code Online (Sandbox Code Playgroud) 我知道tomcat正在运行,因为当我键入http:// localhost时,tomcat页面会显示出来.我的问题是我无法弄清楚为什么wtpwebapps/myapp是空的,就像eclipse没有发布它,当我输入http:// localhost/myapp时,我得到404错误.
在服务器概述中:
我在Win7下使用eclipse Ganymede 3.4.2,tomcat 6.0
任何帮助将不胜感激,谢谢
我已经为使用InputMap的Swing应用程序实现了一些热键
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.CTRL_MASK), "selectAll");
getActionMap().put("selectAll", new SelectAllAction());
Run Code Online (Sandbox Code Playgroud)
它工作正常.现在,如果我想赶上,我怎么能做同样的事情
CTRL + MouseWheelUp
我尝试了一些组合,比如
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(MouseEvent.MOUSE_WHEEL, Event.CTRL_MASK), "zoom");
Run Code Online (Sandbox Code Playgroud)
没有运气
谢谢
我正在创建一个使用GWT的项目,设计师团队使用HTML和JQuery制作了一个原型.我正在使用UIBinder"重建"UI.我的问题是应用程序有一个使用JQuery的下拉菜单...它不起作用
到目前为止我尝试过的是在UIBinder XML中使用HTMLPanel并插入菜单,我保留了.js文件并在HTML文件中引用它们,希望操作将被拾取......但没有运气.
这是menu.ui.xml,显示菜单但没有鼠标悬停
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:HTMLPanel>
<!-- menu -->
<ul id="menu">
<li class="home"><a href="#"><span>Accueil</span></a></li>
<li class="configuration">
<g:Anchor ui:field="configurationButton" href="#">
<span>Configuration</span></g:Anchor>
<div class="submenu">
<div class="group">
<ul>
<li>
<a href="#">Fiches de configuration</a>
<ul>
<li><a href="#">Organisme</a></li>
<li><a href="#">Groupe opérationnel</a></li>
<li><a href="#">Unité opérationnelle</a></li>
<li><a href="#">Immeuble</a></li>
</ul>
</li>
</ul>
</div>
</div>
</li>
<li class="audit"><a href="#"><span>Audit</span></a></li>
<li class="result"><a href="#"><span>Résultats</span></a></li>
<li class="scenario"><a href="#"><span>Scénarios</span></a></li>
<li class="document"><a href="#"><span>Documents</span></a></li>
</ul>
<!-- menu.end -->
</g:HTMLPanel>
Run Code Online (Sandbox Code Playgroud)
JQuery代码,它位于一个单独的文件common.js中
$('#menu').find('submenu').each(function(){
alert("inside");
var totalWidth = 0;
$(this).children().each(function(){
totalWidth += …
Run Code Online (Sandbox Code Playgroud) 我不得不将Eclipse Indigo编码更改为UTF-8.现在所有的éàçè的spécial字符都被替换为 .
我可以进行搜索和替换,但我想知道是否有更好的解决方案.
谢谢
我有一个工作簿,我正在尝试删除名称与特定字符串不匹配的工作表.
这是我的代码
XSSFWorkbook book = new XSSFWorkbook(new FileInputStream(excelName));
for(int i=0;i<book.getNumberOfSheets();i++){
System.out.println(book.getSheetAt(i).getSheetName());
if(!book.getSheetAt(i).getSheetName().equals(sheetName)){
book.removeSheetAt(i);
}
}
Run Code Online (Sandbox Code Playgroud)
代码运行良好,但它不执行所需的任务
所述解决方案是颠倒循环次序.这是一个更干净的代码
private void removeOtherSheets(String sheetName, XSSFWorkbook book) {
for(int i=book.getNumberOfSheets()-1;i>=0;i--){
XSSFSheet tmpSheet =book.getSheetAt(i);
if(!tmpSheet.getSheetName().equals(sheetName)){
book.removeSheetAt(i);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个方法将有符号或无符号转换byte
为int
,但它不返回它应该返回的内容.有人可以在下面的代码中指出问题吗?
public int convertByteToInt(byte[] b){
int value= 0;
for(int i=0;i<b.length;i++){
int n=(b[i]<0?(int)b[i]+256:(int)b[i])<<(8*i);
value+=n;
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我正在读取一个wav文件以计算SNR.转换返回的值应该在0到255之间给出一些东西.应用程序应该比较2个wave文件,on是orignal one,另一个是修改的并计算SNR.
我有这个代码可以正确地杀死任何正在运行的Excel进程.
public static void killExcel(){
while (isProcessRuning("EXCEL.EXE")){
Runtime.getRuntime().exec("taskkill /IM EXCEL.EXE");
}
}
public static boolean isProcessRuning(String serviceName) throws Exception {
Process p = Runtime.getRuntime().exec(TASKLIST);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains(serviceName)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果Excel文件提示保存问题,我有一个无限循环.
我是一个在Java Swing上旋转和平移形状的命令模式.平移和旋转分离得很好,但是当我做60度时.旋转然后平移,平移跟随新的旋转坐标.这意味着如果我拖动鼠标,形状移动与鼠标移动矢量60度的差距是否有任何简单的解决方案?请帮忙,我在这里碰墙
我的旋转执行方法
public void execute() {
System.out.println("command: rotate " + thetaDegrees );
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
t.rotate(Math.toRadians(thetaDegrees), shape.getCenter().x, shape.getCenter().y);
shape.setAffineTransform(t);
}
}
Run Code Online (Sandbox Code Playgroud)
我的翻译执行方法
public void execute() {
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
System.out.println("Translation x :"+x + ", Translation y :"+y);
t.translate(x,y);
shape.setAffineTransform(t);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都可以非常感激
我在ScrollPanel中有一个Celltree.我在UIBinder中设置ScrollPanel的大小如下
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<g:ScrollPanel ui:field="panel" width="240px" height="1200px"></g:ScrollPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)
在我的Java类中,我有以下内容:
@UiField ScrollPanel panel;
public Arborescence() {
initWidget(uiBinder.createAndBindUi(this));
// Create a model for the tree.
TreeViewModel model = new CustomTreeModel();
/*
* Create the tree using the model. We specify the default value of the
* hidden root node as "Item 1".
*/
CellTree tree = new CellTree(model, "Item 1");
panel.add(tree);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是当我填充CellTree时,水平条没有显示,甚至内容都溢出.垂直条显示正常.
谢谢
更新
使用FireBug,我发现问题来自于 element.style {
overflow: hidden;
}
它似乎是一个覆盖我的CSS的内联CSS.有没有办法改变它?
我有一个加载弹出窗口,我需要在页面顶部显示,即使用户向下滚动.
到目前为止我尝试的是设置弹出位置如下
setPopupPosition(Window.getClientWidth()/2 , 0);
Run Code Online (Sandbox Code Playgroud)
弹出窗口显示在absolut顶部.
我有一个字符串值列表.我使用比较器按特定顺序对它们进行排序,如下所示
public static final List<String> CUSTOM_LIST = Arrays.asList("Red", "Green", "Blue");
comparator = new Comparator<String>(){
@Override
public int compare(final String o1, final String o2){
return Integer.valueOf(CUSTOM_LIST.indexOf(o1))
.compareTo(Integer.valueOf(CUSTOM_LIST.indexOf(o2)));
}
};
Run Code Online (Sandbox Code Playgroud)
所以要比较一下
Collections.sort(listToSort,comparator);
Run Code Online (Sandbox Code Playgroud)
或者用于反向排序
Collections.sort(listToSort,Collections.reverseOrder(comparator));
Run Code Online (Sandbox Code Playgroud)
现在我的列表中有空值,我希望它们总是在最后.我如何实现这一目标?